java.lang.UnsatisfiedLinkError: no XXX in java.library.path


其中涉及的測試源碼如下:

For those who didn't install Java with default settings, a systematic way for solving JNI class path problem is:
1> include "System.out.println(System.getProperty("Java.library.path")); " in your "static" block, right before loading the class.
2> run your program and not surprisingly you got the err again, but this time with java.library.path info for your system. (it's important since this path name varies among systems).
3> cp your libxxx.so into the java.library.path

 

Java一般使用兩個path:classpath 和 java.library.path

classpath是指向jar包的位置

java.library.path是非java類包的位置如(dll,so)

解決辦法:

第一種方法,在代碼里設置環境變量

第二種方法:執行時在vm arguments里添加-Djava.library.path= /usr/local/lib,例如java -Djava.library.path=.   xxx(xxx是某個類文件的名字,不包括后綴)

第三種方法:設置環境變量java.library.path

  1:Linux下的系統變量LD_LIBRARY_PATH來添加java.library.path

  2:Windows下設置哪個環境變量???????????????????

 

如果你上面看不懂的話就繼續向下面看:
1、 在你載入jni類之前 放入“System.out.println( System.getProperty("java.library.path"));
2、運行你的程序你將獲得java.library.path指向的目錄
3、拷貝你的libxxx.so到java.library.path指向的某個目錄下面。
注意: 
      Linux下:一定要將Linux下的共享庫(我暫且這么叫:)命名成libxxx.so的形式,"xxx"是你在System.loadLibrary("xxx")中用到的加載庫名稱。

  Windows下:一定要將Windows下的共享庫(我暫且這么叫:)命名成xxx.dll的形式(沒有前邊的lib三個字母),"xxx"是你在System.loadLibrary("xxx")中用到的加載庫名稱。

 

查了其他的資料:
也可以通過設置LINUX下的系統變量LD_LIBRARY_PATH來添加java.library.path,只要在啟動~/.bashrc中添加如下代碼然后重新登錄shell,就可以將動態庫放在當前目錄下運行你的jni程序了。
export LD_LIBRARY_PATH=.:..:$LD_LIBRARY_PATH

另外也可以通過如下I'm new to JNI. I see there are several ways to set JVM to look for libraries dll, so, etc.

 

System.setProperty("java.library.path", ".");
            System.loadLibrary("hello");
That's when UnsatisfiedLinkError

java.lang.UnsatisfiedLinkError: no hello in java.library.path
            at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
            at java.lang.Runtime.loadLibrary0(Runtime.java:822)
            at java.lang.System.loadLibrary(System.java:992)
            at HelloWorld.main(HelloWorld.java:17)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM