龙芯开源社区

 找回密码
 注册新用户(newuser)
查看: 3904|回复: 3

2F下用JNI调用第三方共享库的异常

  [复制链接]
发表于 2009-7-17 13:18:01 | 显示全部楼层 |阅读模式
程序模块:
1、Java程序,用来运行业务
2、JNI共享库,由Java程序调用。
3、第三方共享库。由JNI共享库调用,实现功能。
--------------------Java代码------------------
public class Test
{
  static
        {
                try
                {
                        System.load("/path/libtest.so");
                }
                catch(Exception e)
                {
                        e.printStackTrace();
                }
        }
   public native void test();
   public static void main(String[] args)
   {
     new Test().test();
   }
}
>javac Test.java
>javah Test
---------------------Javah 后得到Test.h-----------------
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "/usr/lib/jvm/java-6-openjdk/include/jni.h"
/* Header for class Test */
#ifndef _Included_Test
#define _Included_Test
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class:     Test
* Method:    test
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_Test_test
  (JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif

-------------------test.c jni共享库程序代码---------------------------
#include "testso.h"
#include "Test.h"
#include <stdio.h>
#include <string.h>
int main()
{
   C_Initialize();
}
JNIEXPORT void JNICALL Java_Test_test
  (JNIEnv *, jobject)
{
        C_Initialize();
}
---------------------testso.h 第三方库头文件------------------------
int C_Initialize(void);
---------------------testso.c 第三方库c文件------------------------
#include <stdio.h>
#include "testso.h"
int C_Initialize(void)
{
printf("test so -> C_Initialize\n");
return 0;
}
--------------------------------------------------------------------
1、编译第三方库文件libtestso.so
g++ -c -fPIC test.c
g++ -shared -fPIC -o libtestso.so testso.o
得到libtestso.so
2、编译jni得到libtest.so
g++   -c -o  test.o    test.cpp
g++ -shared -fPIC  test.o ./libtestso.so  -o libtest.so
3、执行:java Test出现异常

#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  SIGSEGV (0xb) at pc=0x399547c4, pid=4251, tid=717832192
#
# Java VM: Java HotSpot(TM) Client VM (1.5-internal mixed mode)
# Problematic frame:
# C  [libtest.so+0x7c4]  Java_Test_test+0x24
#
# An error report file with more information is saved as hs_err_pid4251.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#
已放弃
 楼主| 发表于 2009-7-17 15:41:38 | 显示全部楼层
大家可以把代码拿去自己的机器上试试看。
 楼主| 发表于 2009-7-17 19:46:38 | 显示全部楼层
请大家帮帮忙啊。
发表于 2009-9-7 18:56:09 | 显示全部楼层

回复 1# 的帖子

新发布的版本应该已经修复该问题。测试通过。

本版积分规则

小黑屋|手机版|Archiver|Lemote Inc.  

GMT+8, 2019-1-21 21:19 , Processed in 0.184209 second(s), 17 queries .

快速回复 返回顶部 返回列表