java – maven项目中的资源和配置加载

前端之家收集整理的这篇文章主要介绍了java – maven项目中的资源和配置加载前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Maven进行桌面应用.我读了大约 Maven standart directory layout,现在我有这个项目结构:
App
|-- pom.xml
`-- src
    |-- main
        |-- java
        |   `-- java classes
        |-- resources
        |   `-- images
        |       `-- app images
        `--config
           `--config.xml

我想找到一种方法来加载我的资源和配置文件.我阅读了一些文章主题并找到了这个(我的代码中的简化示例):

//class for loading config
public class Preferences {
    public Preferences() {
        InputStream image = Preferences.class.getResourceAsStream("images/image.png");
        InputStream config = Preferences.class.getResourceAsStream("config.xml");
    }        
}

但是image和config变量包含null.我正在尝试不同的加载变体(从根文件夹,使用this.getClass()而不是Preferences.class,以及其他),但我总是为null.我真的不明白这个资源加载系统,我没有找到任何关于它的好文档.如果有人对这种机制做出了很好的解释(或者只是在文档上给出一个链接),那就太好了.
因此,主要问题是:如何加载我的资源和配置文件

解决方法@H_502_13@
我想我找到了解决方案.正如Juned Ahsan和mR_fr0g所写,我需要使用ClassLoader类,而不是this.getClass().getResource().但是,它仅适用于资源文件夹.但是maven允许添加其他文件夹作为资源文件夹.我只需要将此部分添加到pom.xml:
<build>
    <resources>
        <resource>
            <directory>src/main/config</directory>
        </resource>
    </resources>
</build>

而且工作的java代码是:

InputStream image = this.getClass().getClassLoader().getResourceAsStream("images/image.png");
InputStream config = ClassLoader.getSystemResourceAsStream("config.xml");

猜你在找的Java相关文章