是否可以在runnable 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
答案 0 :(得分:4)
为了解决这个问题,我使用了一种解决方法:运行runnable jar而不是运行主类,我将jar添加到类路径中。
我使用的命令如下:
java -classpath .;MyRunnableJar.jar;prop_dir; my.package.MyClass
答案 1 :(得分:1)
它应该像清单中的prop_dir/prop1.properties prop_dir/prop1.properties
一样吗?
答案 2 :(得分:0)
您必须在类文件中引用相对于.jar文件位置的.properties文件。类路径分隔符对于Windows(分号)和Unix环境是不同的 (结肠)。
适用于Windows
java -classpath。; prop_dir; -jar Runnable.jar(在你的类文件中,属性文件应该由类路径中的相对URl访问说“prop_dir / prop1.properties”)
对于Unix env
java -classpath。:prop_dir:-jar Runnable.jar(在你的类文件中,属性文件应该由来自类路径的相对URl访问说“prop_dir / prop1.properties”)
代码:
输出:
答案 3 :(得分:0)
添加。到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");
答案 4 :(得分:0)
您只需将属性文件放在META-INF文件夹中即可。
+META-INF
+properties_dir
+Test.properties
答案 5 :(得分:0)
对我有用的是在jar中添加属性文件并将该jar放在MANIFEST文件的classpath中(在Class-Path部分下)。
当我在-cp选项下传递相同的jar时,不知何故它没有用。似乎总是从MANIFEST文件中获取runnable jar的类路径。
答案 6 :(得分:0)
我有更好的方法来解决这个问题
我的项目结构是:-You can see there is no property file in this project structure
package com.main;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class Run {
public static void main(String[] args) throws IOException {
Properties prop = new Properties();
ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream stream = loader.getResourceAsStream("config.properties");
prop.load(stream);
System.out.println(prop.getProperty("name"));
}
}
现在将属性文件放在导出可运行jar文件的同一folder中。
对于这种方法,您不需要在eclipse中创建属性文件,只需要创建一个属性文件即可在其中导出可运行的jar,并记住不要提供属性文件的路径,只需写像这样的属性文件名
InputStream stream = loader.getResourceAsStream("config.properties");