我先自己顶一下
有没有可能是编译处理的so有问题,但是我用这种编译方法编译出一个很简单的so文件,然后在C++程序中调用,就没问题

解决方案 »

  1.   

    简单的方法就是放在 $JAVA_HOME/bin 下,用System.loadLibrary("libExa")
    ,复杂的就是在运行程序的时候将 -Djava.library.path=/your/path/to/so  做为给jvm的参数
      

  2.   

    按照楼上的方法,我这么运行
    java -Djava.library.path=/mypath/so:$LD_LIBRARY_PATH RunExa
    还是有异常
    native lib 'libExa' not found in 'java.library.path': /mypath/:syspath
    Exception in thread "main" java.lang.UnsatisfiedLinkError: no libExa in java.library.path
      

  3.   

    比如你的libExa.so放在/tmp目录下,那么就应该这样运行
    java -Djava.library.path=/tmp RunExa
      

  4.   

    to uncooldog(不酷的狗):
    我是这么运行的
      

  5.   

    要不你这样试一下,把xxx.so放到$JAVA_HOME/jre/lib/i386/目录下去,这样就不用什么-D..了
    但是上面的方法也应该是对的,我也不知道为什么了,应该不会是动态链接库的问题吧,怪了
      

  6.   

    我的操作系统是Solaris,不是Windows,在Windows下可以运行的
      

  7.   

    set LD_LIBRARY_PATH=so文件所在的路径
    export LD_LIBRARY_PATH然后就可以执行JNI程序了http://www.javayou.com (Java自由人)
      

  8.   

    http://www.javayou.com/showlog.jspe?cat_id=-1&log_id=88