【发布时间】:2011-07-18 16:36:43
【问题描述】:
是否可以使用某种配置文件来初始化 Java 系统属性?
(即:您可以使用 jar 中的文件设置 java.library.path 吗)
编辑:澄清:我特别询问初始化系统属性到文件中的一个值,而不是稍后从虚拟机内部设置它们。是的,您可以在机器启动后非常轻松地将系统属性更改为您想要的任何值,但是 Java 系统类不会使用新值。
实际上,这意味着 System.setProperty 和 System.setProperties 对于加载本机库是无用的,因为 JNI 将始终使用 java.library.path 的原始值来加载库。我试图弄清楚是否有一个更干净的替代方案,而不是在任何地方的启动脚本中都放置 -Djava.library.path=whatever 。
【问题讨论】:
-
您需要实现观察者模式。当属性文件更改时,您可以在管理屏幕上有一个按钮让系统读取新值或继续检查属性文件上的日期更改。
-
绝对可以从任何地方为您自己的类加载本地库:OSGi 通过 Bundle-NativeCode 清单标头公开了一种方法来为捆绑包执行此操作。
-
或使用 System.load(String filename) 与您想要的任何路径
标签: java properties java-native-interface