TransWikia.com

Доступ к ресурсам jar файла

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>

В чём проблема и как её решить?

One Answer

В настройках 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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP