Доступ к ресурсам jar файла
Есть maven проект java 11. Необходимо получить доступ к ресурсам.
URL url = Main.class.getResource("/file.xml");
File file = new File(url.getFile());
System.out.println(file.exists());
При запуске в IDE (Idea) всё работает. Вывод будет True.
Если же собрать jar файл и запустить его java.exe -jar Example.jar, то файл не находит, вывод False.
Файл file.xml лежит в папка src/main/resources, в pom.xml добавлено:
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
и
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<mainClass>org.example.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
В чём проблема и как её решить?
Ответы (1 шт):
Автор решения: Podushkoved
→ Ссылка
В настройках pom.xml надо указать расположение папки с ресурсами и в какую папку их копировать в архиве:
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>resources</targetPath>
</resource>
. . .
</resources>
Далее прочитать файл, если это текст, можно следующим образом:
InputStream inputStream = Test.class.getResourceAsStream("/resources/file.xml");
byte[] bytes = inputStream.readAllBytes();
String text = new String(bytes, StandardCharsets.UTF_8);
System.out.println(text); // выводим результат
Ресурсы могут быть разными, например картинками: maven сборка jar файла с картинками