Java, JavaFX. Использование картинок после преобразования проекта в .jar
Java 11, JavaFX 11
Как использовать картинку в проекте, который преобразован в .jar?
Преобразовал проект в .jar, но при его запуске он не может найти картинки, они не отображаются в моем проекте.
Использовал для создания картинок конструкции вида new Image("file:icons/area/doors/airlock.png"), позднее используемых в ImageView(). При запуске проекта через IntelliJ IDEA картинки спокойно находились и отображались, но в .jar файле - нет.
Попытался погуглить, нашел информацию по getResourceAsStream() и getResource(), но в такой конструкции:
new Image(getClass().getResourceAsStream("icons/area/doors/airlock.png"))
вылетает ошибка: Caused by: java.lang.NullPointerException: Input stream must not be null
Конструкции вида new Image(getClass().getResource("icons/area/doors/airlock.png").toExternalForm()) или new Image(getClass().getResource("icons/area/doors/airlock.png").toURI().toURL().toString()) вызывают эту же ошибку.
Папка с картинками находится в корне проекта, но не в папке с кодом. Например projectName/icons/area/doors/airlock.png
Ответы (1 шт):
Для использования картинок нужно создать ресурсную папку. В IntelliJIDEA это можно сделать в контекстном меню после ПКМ по какой-либо папке, в которой будет ваша картинка/другой ресурс. Приведу пример из своего проекта:
После этого картинку можно использовать, например, так:
new Image(getClass().getResourceAsStream("/icons/area/doors/airlock.png"));
Писать в пути к файлу ресурсную папку не нужно.
