java.library.path

設置java.library.path的兩種方式:
1、通過啓動參數設定 java -Djava.library.path=/jni/library/path Test 
2、在代碼中設定 System.setProperty("java.library.path", "/jni/library/path"); 

兩種方式的區別:
如果想在程序中加載一些庫文件,使用第一種方式指定java.library.path屬性時可以正常載入,而使用第二中方式就不行。java.library.path只有在JVM啓動的時候讀取一次,因此在java代碼中更改java.library.path是不起任何作用的。我們還可以在代碼中使用System.load("/jni/library/absolute/path")來加載絕對地址指定的本地庫。

LD_LIBRARY_PATH:
我們也可以使用LD_LIBRARY_PATH來指定本地庫地址,一樣會生效。
因爲JVM啓動時,會使用系統變量LD_LIBRARY_PATH的值來初始化java.library.path屬性。

java.library.path默認值
在我的機器上其默認值爲:
$JAVA_HOME/jre/lib/i386/server:
$JAVA_HOME/jre/lib/i386
:$JAVA_HOME/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib
分析:
- 前三個都是JRE中提供的本地庫
- 後三個是操作系統的庫文件目錄

-Djava.library.path 和 LD_LIBRARY_PATH的區別
如果使用
 java -Djava.library.path=/jni/library/path 的方式設置的話,會覆蓋默認值。其值爲:
/jni/library/path

如果使用 export
 LD_LIBRARY_PATH=/jni/library/path的方式設置的話,會追加其值到默認值中。LD_LIBRARY_PATH的值會插入到JRE本地庫之後,操作系統庫文件目錄之前。其值爲:
$JAVA_HOME/jre/lib/i386/server:
$JAVA_HOME/jre/lib/i386
:$JAVA_HOME/jre/../lib/i386:/jni/library/path:/usr/java/packages/lib/i386:/lib:/usr/lib


from:http://blog.sina.com.cn/s/blog_48a45b9501015m7v.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章