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 :)