Попытка загрузить значок из файла jar
Я пытаюсь загрузить значки из файла jar. Я попытался загрузить его из классов в файле jar, а также классов вне файла jar.
вне jarfile - возвращает исключение null
java.net.URL imageURL = LoadHTMLExample.class.getClassLoader()
.getResource("icons/mouse.png");
в стороне файла jar в LoadHTMLExample
java.net.URL imageURL = this.getClass().getClassLoader()
.getResource("icons/mouse.png");
получить ту же ошибку.
Я также пробовал варианты
"значки", "/значки" "значки/" "/icons/mouse.png" "icons/mouse.png"
Кажется, что ничего не работает
значок находится в файле jar
jar
--icons --- {all the images}
--com.blah.blah
Ответы
Ответ 1
Пропустить загрузчик классов и вместо этого получить ресурс как поток. Если вам не нужен URL-адрес, вы можете напрямую их перевести в BufferedImages. Я оставил поток и обработку исключений в качестве дополнительного упражнения.
InputStream stream = LoadHTMLExample.class
.getResourceAsStream( "/icons/mouse.png" );
BufferedImage image = ImageIO.read( stream );
Пользователю нужен URL-адрес, который возвращает нас всем остальным предложениям. Изображения, безусловно, находятся в банке, не так ли?
Ответ 2
Я всегда использовал загрузчик системного класса, путь которого относится к корню JAR:
URL url = ClassLoader.getSystemClassLoader().getResource("icons/mouse.png");
Icon icon = new ImageIcon(url);
Ответ 3
Я думаю, что getResource
получает ресурс относительно местоположения LoadHTMLExample.class
. Поэтому ваш jarfile
должен быть структурирован следующим образом:
myjar.jar
|
|- ...
|- LoadHTMLExample.class
|- ...
\-- icons
|
\- mourse.png
Кроме того, вы можете получать поток через getResourceAsStream
, чем получать URL
.
Ответ 4
Является ли рассматриваемая jar на пути к классам вашей среды выполнения? У меня есть банка с PNG в ней, и я могу воссоздать нули, если я не включу ее в путь к классам. Если кувшин там, они уходят.
Ответ 5
final java.net.URL imageURL3 = com.java.html.LoadHTMLExample.class.getResource( "icons/" );
работает для ниже структуры каталогов
myJar.jar
|
| - Общение
| - Охота и рыбалка
| - Общение
- иконки | - mourse.png
Спасибо за помощь всем
Ответ 6
Icon icon = new ImageIcon(ClassLoader.getSystemResource("icons/mouse.png"));
Из JavaDoc getSystemResource()
:
Найти ресурс с указанным именем из пути поиска, используемого для загрузки классов...
Это найдет ваши иконки даже в jar файле.