Stack Overflow на русском Asked by kezeze on August 30, 2021
Есть 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>
В чём проблема и как её решить?
В настройках 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 файла с картинками
Correct answer by user328896 on August 30, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP