在unix下用如下指令设置:
setenv LD_LIABRARY_PATH yourlibpath其它的不大清楚。一般是class文件存在的目录。另外如果你的语句是这样:System.loadLibrary("hello");
那么,在unix下,你的库文件必须是libhello.so。hello前面的lib不能少。

解决方案 »

  1.   

    我的系统是redhat6.2,我在/root/.bash_profile下设置了LD_LIABRARY_PATH ,也尝试了将 *.so 文件的目录注册在CLASSPATH中,还试了把库文件放在JAVA_HOME下,可是都不起作用。这是为什么?
     
      

  2.   

    是不是编译的时候参数不对呢?
    用没用gcc -shared ?或者你用 echo $LD_LIBRARY_PATH  看看是不是生效了。
      

  3.   

    我已经试过了各种办法,都不行。
    已试过的方法:
    1、在/root/.bash_profile中设置LD_LIBRARY_PATH,并且echo $LD_LIBRARY_PATH已经生效;
    2、用System.setProperties()设置java_library_path系统变量;
    3、使用共享库名为some.so,some.sl,libsome.so,libsome.sl,并用System.loadLibrary("some")调用;
    4、重新用gcc -shared 编译共享库;
    5、将共享库放在JAVA_HOME,JAVA_HOME/lib和当前目录下,甚至是/usr/lib目录下。
    都没起作用,为什么?
      

  4.   

    是这样格式写吗?
    Step 1. HelloWorld.javaclass HelloWorld {
        public native void displayHelloWorld();    static {
            System.loadLibrary("hello");
        }
        
        public static void main(String[] args) {
            new HelloWorld().displayHelloWorld();
        }
    }