【发布时间】:2014-11-07 12:28:38
【问题描述】:
我有一个 xml 格式的配置文件,我需要将其加载到我的 java 代码中。在测试时,我通过它的绝对 URL 导入它,但现在我将项目编译和部署为一个 jar,这将不再起作用。
根据以前的经验,我认为正确的方法是使用 ClassLoader,但我遇到了一些困难。也许是因为我的项目设置,我不知道。我想我可以完成这项工作,就像我过去所做的那样,但我真的想确保我以标准、传统和/或正确的方式来做,这样我就不需要每次都进行实验这出现了。
这是我尝试实现的代码:http://www.mkyong.com/java/java-read-a-file-from-resources-folder/
但是,这段代码:
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("file/test.xml").getFile());
由于需要抽象类的静态方法中的文件,我无法使用。因此,我使用以下代码将其关闭:
ClassLoader classLoader = XmlConfigLoader.class.getClassLoader();
File file = new File(classLoader.getResource("configuration.xml").getFile());
XmlConfigLoader 是包含类。 "configuration.xml" 位于 src/main/resources 文件夹中,就像示例中的 "file/test.xml" 一样
我在调试模式下运行代码,发现file 路径错误。它不是查看src/main/resources,而是指向target/classes
- 我需要设置默认资源文件夹的设置选项吗?
- src/main/resources 是存储此类文件的常规位置吗?
- 在此设置中我加载 ClassLoader 的方式是否正确?
作为附加信息,这是一个 Maven 项目。
更新:
我当前的代码实际上运行良好,除了一个错误。该文件在编译时自动传输到target/classes 文件夹。但是,url 中的空格被%20 替换,我必须手动将它们改回来才能让系统找到该文件。我确信有更好的解决方案。有人吗?
【问题讨论】:
标签: java file maven resources classloader