Изображение JavaFx не найдено в файле Jar

java image javafx

2142 просмотра

2 ответа

6 Репутация автора

Я пытаюсь создать исполняемый файл JAR моего проекта, который имеет графический интерфейс JavaFx. Проект работает в затмении, но когда я пытаюсь запустить jar:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   ...Caused by: java.lang.NullPointerException: Input stream must not be null

Код для изображений выглядит так:

private Image image1 = new Image(this.getClass().getResourceAsStream("../pic/classic/image1.png"));

Что мне нужно изменить, чтобы я мог запустить файл JAR без исключения.

Спасибо за помощь.

Автор: Chill3er Источник Размещён: 18.07.2016 07:47

Ответы (2)


5 плюса

149825 Репутация автора

..Не действует в указании имени ресурса в файле JAR. Согласно документации по именованию ресурсов каждый компонент пути ресурса должен иметь действительный идентификатор Java: ..не является.

Чтобы это исправить, просто укажите абсолютное имя ресурса относительно пути к классу. Так что если класс, в котором вы находитесь, находится в пакете с именем com.mycompany.myapplication.view, вы должны использовать

private Image image1 = 
    new Image(this.getClass().getResourceAsStream("/com/mycompany/myapplication/pic/classic/image1.png"));
Автор: James_D Размещён: 18.07.2016 07:57

0 плюса

1 Репутация автора

Имейте в виду, что имена файлов изображений чувствительны к регистру в jar и не находятся в IDE (например, Eclipse).

Так что если у вас есть "/resource/image.jpg"аргумент и IMAGE.jpgимя файла, приложение будет работать в Eclipse и, будучи экспортированным в jar, будет производить NullPointerExceptionв

Image image1 = new Image(getClass().getResourceAsStream("/resource/image.jpg"));
Автор: Alexey Rybas Размещён: 05.09.2018 01:22
Вопросы из категории :
32x32