我有以下源结构:
src
resources
config.properties
data.txt
我将这些文件复制到我的jar中,没有展平。因此,jar包含resources/config.properties
和resources/data.txt
config.properties在本地运行时工作正常(Eclipse:Run as | Run Configurations)并执行jar。
private static final String CONFIGURATION_FILE_PATH = "resources/config.properties";
resourceInputStream = classLoader.getResourceAsStream(CONFIGURATION_FILE_PATH);
configurationProperties.load(resourceInputStream);
data.txt文件在本地工作(Eclipse:Run as | Run Configurations)但在执行jar时找不到。我确实需要创建File对象,然后将其传递给第三方库。
private static final String DATA_FILE_PATH = "resources/data.txt";
URL resourceUrl = classLoader.getResource(DATA_FILE_PATH);
File file = resourceUrl == null ? null : new File(resourceUrl.getPath());
执行jar时,file
为空。
这是执行问题吗?
我正在调用Jenkins jar /build/myapp.jar
的jar。我应该为此执行设置类路径吗?我的意思是-cp
开关..?
打开其他加载选项
如上所述,config.properties
加载正常。我不需要data.txt
加载getResource
。我对其他方法持开放态度。只要我能从中获得File
。
答案 0 :(得分:0)
对于Java资源,您必须使用斜杠启动资源名称,使其成为绝对或相对于Jar层次结构的顶部。
不以斜杠开头的资源名称是相对于加载它们的类的当前位置(包名称/目录)。