添加属性文件以构建可运行jar的路径
是否有可能在可运行的jar文件的类路径中添加一些属性文件? 我尝试了这些解决方案:
-
使用以下命令运行可执行文件:
java -cp ../prop_dir/prop1.properties;../prop_dir/prop2.properties -jar MyRunnableJar.jar
-
添加到MANIFEST FILE(在Class-Path部分中)
../prop_dir/prop1.properties ../prop_dir/prop1.properties
但它们都不起作用。
正在运行的目录的架构如下
+ + MyRunnableJar.jar + prop_dir/ + prop1.properties + prop2.properties
非常感谢,
丹尼尔
编辑
当我执行以下行时
System.out.println(System.getProperty("java.class.path"));
我在我的控制台中获取
MyRunnableJar.jar
为了解决这个问题,我使用了一种解决方法:运行主要类而不是运行runnable jar,我将jar添加到类路径中。
我使用的命令如下:
java -classpath .;MyRunnableJar.jar;prop_dir; my.package.MyClass
它应该像prop_dir/prop1.properties prop_dir/prop1.properties
一样吗?
还要检查这个问题: Java -jar:访问外部配置文件
您必须在类文件中引用相对于.jar文件位置的.properties文件。 对于Windows(分号)和Unix环境(冒号),类路径分隔符是不同的。
对于窗户
java -classpath。; prop_dir; -jar Runnable.jar(在你的类文件中,属性文件应该由类路径中的相对URl访问说“prop_dir / prop1.properties”)
对于Unix环境
java -classpath。:prop_dir:-jar Runnable.jar(在你的类文件中,属性文件应该由类路径中的相对URl访问说“prop_dir / prop1.properties”)
码:
输出:
添加一个。 到MANIFEST.MF的Class-Path并将属性文件放在与runnable jar相同的级别对我有用。
java -jar MyExec.jar MANIFEST.MF Manifest-Version: 1.0 Main-Class: com.test.MyMain Class-Path: . lib/MyDependent1.jar lib/MyDependent2.jar
加载属性文件的代码片段应该是这样的
ResourceBundle properties = ResourceBundle.getBundle("MyExec");
您只需将属性文件放在META-INF文件夹中即可。
+META-INF +properties_dir +Test.properties
对我有用的是在jar中添加属性文件并将该jar放在MANIFEST文件的classpath中(在Class-Path部分下)。
当我在-cp选项下传递相同的jar时,它以某种方式不起作用。 似乎总是从MANIFEST文件中获取runnable jar的classpath。