首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用配置文件设置Java系统属性

使用配置文件设置Java系统属性
EN

Stack Overflow用户
提问于 2011-07-19 00:36:44
回答 5查看 48K关注 0票数 19

是否可以使用某种配置文件来初始化Java系统属性?

(例如:您可以使用jar中的文件设置java.library.path吗)

编辑:澄清:我特别询问关于将系统属性初始化为文件中的值的问题,而不是稍后从虚拟机内部设置它们。是的,在机器启动后,您可以很容易地将系统属性更改为您想要的任何值,但是Java system类将不会使用新值。

实际上,这意味着System.setProperty和System.setProperties对于加载本机库是无用的,因为JNI总是使用java.library.path的原始值来加载库。我正在尝试找出是否有更干净的替代方案,而不是只将-Djava.library.path=whatever放在到处的启动脚本中。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-07-24 13:35:55

有一种方法可以通过编程设置java.library.path,请参阅this

该代码是在ClassLoader上设置sys_path字段的黑客,

代码语言:javascript
复制
System.setProperty( "java.library.path", "/path/to/libs" );

Field fieldSysPath = ClassLoader.class.getDeclaredField( "sys_paths" );
fieldSysPath.setAccessible( true );
fieldSysPath.set( null, null );
票数 14
EN

Stack Overflow用户

发布于 2011-07-19 00:44:30

这将是非常简单的自己去做:

代码语言:javascript
复制
public static void main(String[] args) {
    Properties p = new Properties();
    p.load(...); // Load the properties from a file in your jar
    for (String name : p.stringPropertyNames()) {
        String value = p.getProperty(name);
        System.setProperty(name, value);
    }
}
票数 13
EN

Stack Overflow用户

发布于 2011-07-19 00:41:28

据我所知,你不能初始化它们,但你绝对可以使用你想要的任何来源,将它们的值覆盖成你想要的任何东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6736235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档