Включение изображений с исполняемым jar

Я просматривал Stackoverflow весь день в поисках того, как это сделать, и пока не добился успеха

Я упаковываю быструю игру, которую я сделал, в исполняемую банку, но я неправильно сослался на изображения, я просто сослался на файлы

background = ImageIO.read(new File("wood.jpeg"));

У меня есть классы в пакете src по умолчанию. Я не уверен, куда мне добавить изображения, или если мне нужно добавить их в путь сборки, или правильный способ добавления изображений в путь сборки в новейшей версии eclipse.


person Mintybacon    schedule 19.09.2012    source источник


Ответы (2)


Файлы в Jar не являются файлами в смысле файла на диске. Это просто (возможно) сжатый поток байтов.

Java упрощает извлечение этих «ресурсов» из файлов Jar с помощью ClassLoader

background = ImageIO.read(getClass().getResource("/wood.jpeg"));

Должно сработать...

Это вернет URL, который ImageIO может использовать для загрузки ресурса.

Вы также можете прочитать

И я мог бы перечислить еще несколько. Так что да, об этом много спрашивают;)

person MadProgrammer    schedule 19.09.2012
comment
+1 Очень простое объяснение, но вы также должны указать, где изображения должны быть в проекте. например src / main / resources для maven. - person asgs; 19.09.2012
comment
См. Также информацию о встроенных ресурсах. страница. - person Andrew Thompson; 19.09.2012
comment
@asgs Я считаю, что это выходит за рамки вопроса. При правильном файле сборки / обстоятельствах мы можем генерировать образы во время сборки. - person Andrew Thompson; 19.09.2012
comment
@AndrewThompson: Правильно, просто хотел сообщить ОП, что есть часто используемый каталог, предназначенный для ресурсов. @ -MadProgrammer Да, это быстрый пример. - person asgs; 19.09.2012
comment
Я заставил это работать, но только после перетаскивания файлов изображений в папку bin, хотя с тех пор я не смог запустить execuatble jar .. Спасибо! - person Mintybacon; 19.09.2012
comment
исправление Я добавил файлы в корзину для проверки концепции, чтобы посмотреть, будет ли она работать после этого. Я добавил изображения в исходную папку, чтобы они автоматически добавлялись в корзину и банку, она отлично работает в Windows, но когда я запускаю ее на linux я снова получаю свою программу без изображений - person Mintybacon; 20.09.2012
comment
@Mintybacon попробуйте распечатать результаты getClass().getResource("/wood.jpeg") на консоли (используя System.out.println), чтобы убедиться, что изображение было найдено в ресурсе Jar. Технически, если он работал на одной платформе, этот подход должен работать и на других. - person MadProgrammer; 20.09.2012

Попробуйте использовать Constructing Runnable Jar с помощью Eclipse.

R_Click on the Project in the Package Explorer ---> 
Export ---> Runnable JAR file ---> 
Select the option of Package required libraries into generated JAR
person Kumar Vivek Mitra    schedule 19.09.2012
comment
Этот параметр относится к библиотекам, а не к ресурсам, и не решает проблему попытки загрузить запись zip, как если бы это была File. - person Andrew Thompson; 19.09.2012