添加属性文件以构建可运行jar的路径

是否有可能在可运行的jar文件的类路径中添加一些属性文件? 我尝试了这些解决方案:

  1. 使用以下命令运行可执行文件:

    java -cp ../prop_dir/prop1.properties;../prop_dir/prop2.properties -jar MyRunnableJar.jar

  2. 添加到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。