getClass(). getResourceAsStream() в проекте maven

Pom.xml моего проекта maven выглядит следующим образом:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>groupId</groupId>
  <artifactId>artifactId</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <build>
   <sourceDirectory>src/main/java</sourceDirectory>
   <resources>
    <resource>
     <directory>src/main/resources</directory>
    </resource>
   </resources>
  </build>
</project>

В каталоге src/main/resources у меня есть файл под названием test. В каталоге src/main/java у меня есть класс, который содержит следующую строку:

System.out.println(this.getClass().getResourceAsStream("test"));

Когда строка кода запускается в Eclipse, я получаю вывод

[email protected] 

Когда я экспортирую проект как.jar и запускаю его, я получаю вывод

 null

Я настроил что-то неправильно?

Ответ 1

В разделе <build><resources> обязательно укажите <include> как показано ниже. Это будет явно указывать maven для извлечения этих файлов и включения его в сборку.

   <build>
     <resources>
        <resource>
            <directory>${basedir}/src/main/resources</directory>
            <includes>
                <include>**/*</include>
            </includes>
        </resource>
     </resources>
     ...
  </build>

Ответ 2

Я получил эту ошибку, но через тонну Googling я не смог найти решение. Все ответы касаются пути, никто не заботится о том, чтобы он мог работать в Eclipse, но не в экспортированном файле jar :(

Но теперь я нашел решение, так просто: в Eclipse щелкните правой кнопкой мыши на своем maven project-> Свойства → путь сборки Java → вкладка "Источник"

Вы можете увидеть дерево как:

MyProject/src
   Ouput follder..
   Included (**/*.java)
   Excluded
   ...

Дважды щелкните " Included (**/*.java), удалите существующий, чтобы он стал Included (All) Теперь экспортируйте файл jar :)