设置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
本文来自投稿,不代表本站立场,如若转载,请注明出处:https://typecho.firshare.cn/archives/946.html
免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。避免网络欺诈,本站不倡导任何交易行为。如您私自与本站转载自公开互联网中的资讯内容中提及到的个人或平台产生交易,则需自行承担后果。本站在注明来源的前提下推荐原文至此,仅作为优良公众、公开信息分享阅读,不进行商业发布、发表及从事营利性活动。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。