java – maven项目中的资源和配置加载
发布时间:2020-12-15 03:14:56 所属栏目:Java 来源:网络整理
导读:我正在使用Maven进行桌面应用.我读了大约 Maven standart directory layout,现在我有这个项目结构: App|-- pom.xml`-- src |-- main |-- java | `-- java classes |-- resources | `-- images | `-- app images `--config `--config.xml 我想找到一种方法来
我正在使用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.我真的不明白这个资源加载系统,我没有找到任何关于它的好文档.如果有人对这种机制做出了很好的解释(或者只是在文档上给出一个链接),那就太好了. 解决方法
我想我找到了解决方案.正如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"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |