Fak*_*een 15 java java-native-interface
我可以从java代码本身以编程方式设置java.library.path吗?
以下不起作用.
System.setProperty("java.library.path", "/blah");
Run Code Online (Sandbox Code Playgroud)
Man*_*lva 19
不,你不能.此属性是只读值.您可以使用以下命令在JVM启动时更改它:
-Djava.library.path=your_path
Run Code Online (Sandbox Code Playgroud)
如果要从特定位置加载库,可以使用System.load(libraryPath)代替库的完整路径.
sec*_*ask 19
也许这有帮助http://blog.cedarsoft.com/2010/11/setting-java-library-path-programmatically/
[编辑]链接已经死了,所以我在这里引用它
当搞乱JNI时,必须相应地设置java.library.path
.不幸的是,唯一的方法是在应用程序启动之前添加系统属性
:
sys_paths
与...一样
loadLibrary()
稍后更改系统属性没有任何影响,因为很早就会对属性进行评估并进行缓存.但是那些在jdic的人发现了一种如何解决它的方法.它有点脏 - 但是嘿,那些黑客是我们都喜欢Java的原因......
java -Djava.library.path=/path/to/libs
Run Code Online (Sandbox Code Playgroud)
说明
首先,使用新值更新系统属性.这可能是一个相对路径 - 或者您可能想要动态创建该路径.
类加载器具有包含路径的静态字段(sys_paths).如果该字段设置为null,则会自动初始化该字段.因此,只要调用loadLibrary(),强制该字段为null将导致重新评估库路径...