Java 我能';t从多模块maven项目加载资源
noob这里,我有一个多模块maven项目,但我不能在resources文件夹下加载xml文件。 项目结构: 而Java 我能';t从多模块maven项目加载资源,java,maven,Java,Maven,noob这里,我有一个多模块maven项目,但我不能在resources文件夹下加载xml文件。 项目结构: 而TestClass源代码就像我从互联网上偷来的以下代码片段: public class TestClass { public static void main(String[] args) throws IOException { TestClass test = new TestClass(); InputStream is = test.g
TestClass
源代码就像我从互联网上偷来的以下代码片段:
public class TestClass {
public static void main(String[] args) throws IOException {
TestClass test = new TestClass();
InputStream is = test.getFileFromResourceAsStream("general-analyser-job.xml");
}
private InputStream getFileFromResourceAsStream(String fileName) {
ClassLoader classLoader = getClass().getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream(fileName);
if (inputStream == null) {
throw new IllegalArgumentException("file not found! " + fileName);
} else {
return inputStream;
}
}
}
inputStream
始终为空 尝试将您的xml
文件放入src/test/resources
中,然后使用如下代码:
InputStream is = TestClass.class.getClassLoader().getResourceAsStream("general-analyser-job.xml");
问题解决了,这是一个愚蠢的问题:在
build
下模块的pom.xml
中,标记资源被排除在外,如:
<build>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>**/*.*</exclude>
</excludes>
</resource>
</build>
${basedir}/src/main/resources
**/*.*
只需注释掉
,一切都会正常运行首先,您无需添加
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
</resource>
...
根据你的帖子,我不确定
TestClass
是否真的是作为测试或稍后作为生产代码的测试实现。如果是这样的话,你应该将它移动到一个真正的包中,并将它重命名为更有用的东西。不幸地不起作用。它是空的!
this.getClass().getResourceAsStream("/general...");