Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我能';t从多模块maven项目加载资源_Java_Maven - Fatal编程技术网

Java 我能';t从多模块maven项目加载资源

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

noob这里,我有一个多模块maven项目,但我不能在resources文件夹下加载xml文件。 项目结构:

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...");