2023-01-21 245
我可以从java代码本身编程以编程方式设置java.library.path吗?
以下内容不起作用.
System.setProperty("java.library.path", "/blah");
不,你不能.此属性是唯一的值.您可以在JVM启动时间更改它:
-Djava.library.path=your_path
如果要从特定位置加载库,则可以使用 system.load(librarypath)而不是通往库的完整路径.
也许这会有所帮助:设置” java.library.path” >
与JNI混乱时,必须相应地设置java.library.path.
不幸的是,唯一的方法是在启动应用程序之前添加系统属性:
java -Djava.library.path=/path/to/libs
以后更改系统属性没有任何效果,因为该物业的评估很早并缓存.但是,JDIC的家伙发现了一种如何解决它的方法.有点脏 – 但是,嘿,这些hack是我们都喜欢java的原因……
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).如果该字段设置为空,则将自动初始化.因此,将该字段迫使该字段将导致库路径的重新评估,因为loadLibrary()被称为…
我只是从secmask提供的链接中引用( https://cedarsoft.com/blog.html ),以防该链接死亡:
更改系统属性java.library.path后来没有
任何效果,因为该物业的评估很早并且被缓存.但
JDIC的家伙们发现了一种如何解决它的方法.它是一个
有点脏 – 但是,嘿,这些黑客是我们都喜欢的原因
爪哇.
System.setProperty("java.library.path", "/path/to/libs");
Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths");
fieldSysPath.setAccessible(true);
fieldSysPath.set(null, null);
说明:
首先,使用新值更新了系统属性.这可能是一个相对路径 – 或者您想动态创建该路径.类负载器具有包含路径的静态字段(sys_paths).如果该字段设置为null,则将自动初始化.因此,将该字段迫使该字段null将导致库路径的重新评估.
以上所述是小编给大家介绍的Java语言图书馆以编程方式设置路径,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26254.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态