如何在Java中加载资源文件?

时间:2017-04-17 20:07:23

标签: java configuration

我有以下源结构:

src
    resources
        config.properties
        data.txt

我将这些文件复制到我的jar中,没有展平。因此,jar包含resources/config.propertiesresources/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

1 个答案:

答案 0 :(得分:0)

对于Java资源,您必须使用斜杠启动资源名称,使其成为绝对或相对于Jar层次结构的顶部。

不以斜杠开头的资源名称是相对于加载它们的类的当前位置(包名称/目录)。