Изображения Java загружаются в ide, но не встраиваемый jar - PullRequest
0 голосов
/ 02 июля 2018

Путь к файлу у меня следующий:

  +------------+           +-----------------+      +------------------+
  |            |           |                 |      |                  |
  | src        +----------->  com            +--+--->  application     |
  |            |           |                 |  |   |                  |
  +------------+           +-----------------+  |   +------------------+
                                                |
                                                |   +------------------+
                                                |   |                  |
                                                +--->  resources       |
                                                    |                  |
                                                    +------------------+

Мой код находится в папке приложения, а мои изображения, которые я хочу загрузить, находятся в ресурсах.

Я использую следующий код для получения изображений из ресурсов на класс в приложении (изображение является BufferedImage).

image = ImageIO.read(new File("./src/com/resources/Pad.png"));

Это похоже на работу в моей IDE (intellij), так как я могу видеть загруженные изображения как , показанные

Однако при сборке изображения не показываются. Я строю по:

Файл -> Структура проекта -> Артефакты -> Зеленый плюс -> JAR -> Из модулей с зависимостями -> Местоположение моего основного класса -> Извлечь в целевой Jar

Тогда я строю артефакт -> Строю.

Поэтому, когда я иду к месту назначения встроенной банки и запускаю ее, ни одна из картинок не отображается

Я проверил, были ли изображения во встроенной банке, вынув банку, которая содержит картинки, но по какой-то причине код не загружает картинку.

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Вы можете попробовать использовать ресурс как поток вместо файла.

image = ImageIO.read(this.getClass().getClassLoader().getResourceAsStream("com/resources/Pad.png"))
0 голосов
/ 02 июля 2018

Путь src недоступен в сборке jar. Вы должны использовать загрузчик классов для загрузки ресурсов из classpath. Например. (при условии, что 'src' - корень пути к классам)

image = ImageIO.read(new File(this.getClass()                   
.getResource("com/resources/Pad.png").getPath());

Отредактировано с предложением @MadProgrammer.

...