如何在代码中动态设置java_library_path?
2013-08-29 18:14
573 查看
在使用Java JNI的时候,往往需要在程序启动前设定"java.library.path"
1. 在终端情况下,java -Djava.library.path=/path/to/libs
2. 在IDE情况下,如Eclipse: Project->Properites->Java Build Path -> Source, 然后设定Native library location
注意:之后改变system properties,没有效果, 因为当程序启动时,已经缓存了system properties, 程序每次读取的属性都来自这个缓存。
解释:
Classloader有一个叫做"sys_paths"的静态属性, 它包含了system properties的路径 (这个路径被赋值当程序启动的时候)。我要这里要做的就是,把这个属性置空, 这样当我们调用loadLibrary的时候, 因为system
properties"没有被初始化", Classloader就会把我们的期望的路径("/path/to/libs")设定成功啦。
本文翻译出处 点击打开链接
1. 在终端情况下,java -Djava.library.path=/path/to/libs
2. 在IDE情况下,如Eclipse: Project->Properites->Java Build Path -> Source, 然后设定Native library location
注意:之后改变system properties,没有效果, 因为当程序启动时,已经缓存了system properties, 程序每次读取的属性都来自这个缓存。
System.setProperty( "java.library.path", "/path/to/libs" ); Field fieldSysPath = ClassLoader.class.getDeclaredField( "sys_paths" ); fieldSysPath.setAccessible( true ); fieldSysPath.set( null, null );
解释:
Classloader有一个叫做"sys_paths"的静态属性, 它包含了system properties的路径 (这个路径被赋值当程序启动的时候)。我要这里要做的就是,把这个属性置空, 这样当我们调用loadLibrary的时候, 因为system
properties"没有被初始化", Classloader就会把我们的期望的路径("/path/to/libs")设定成功啦。
本文翻译出处 点击打开链接
相关文章推荐
- 如何解决java.library.path属性在代码中设置不生效问题
- 在java程序中动态设置java.library.path
- java.library.path属性在代码中设置不生效问题
- 动态设置java.library.path
- java.library.path属性在代码中设置不生效问题
- java.library.path属性在代码中设置不生效问题(转)
- 在java程序中动态设置java.library.path
- [置顶] android,在java代码中,如何给textview设置不同的颜色,以及引用color中资源设置颜色
- Android如何在java代码中设置margin
- Android 通过Java代码生成创建界面。动态生成View,动态设置View属性。addRules详解
- 如何在Eclipse中设置Java、JavaScript、HTML智能代码提示
- 如何在java代码中设置margin属性
- android 动态java代码设置背景以及字体等颜色
- 如何在代码中动态为TextView/Button设置drawableRight
- Android 通过Java代码生成创建界面。动态生成View,动态设置View属性。addRules详解
- Android如何在java代码中设置margin
- TextView在java代码中动态设置左边图片
- Android如何在java代码中设置margin
- 如何解决 no jzmq in java.library.path
- 如何设置 LD_LIBRARY_PATH 变量