Попытка загрузить значок из файла JAR - PullRequest
10 голосов
/ 15 июля 2009

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

за пределами jarfile - возвращено нулевое исключение

java.net.URL imageURL = LoadHTMLExample.class.getClassLoader()
    .getResource("icons/mouse.png");

в стороне от файла jar в примере LoadHTMLE

java.net.URL imageURL = this.getClass().getClassLoader()
    .getResource("icons/mouse.png");

получить ту же ошибку.

Я также пробовал варианты "icons", "/ icons" "icons /" "/icons/mouse.png" "icons / mouse.png"

Кажется, ничто не работает.

значок находится в файле jar

jar
 --icons --- {all the images}

 --com.blah.blah

Ответы [ 6 ]

6 голосов
/ 15 июля 2009

Пропустите загрузчик классов и получите ресурс в виде потока. Если вам не нужен URL, вы можете превратить их прямо в BufferedImages, например, так Я оставил поток и обработку исключений в качестве дальнейшего упражнения.

InputStream stream = LoadHTMLExample.class
    .getResourceAsStream( "/icons/mouse.png" );
BufferedImage image = ImageIO.read( stream );

Опрашивающему нужен URL, который возвращает нас к предложениям всех остальных. Изображения определенно в банке, не так ли?

5 голосов
/ 15 июля 2009

Я всегда использовал системный загрузчик классов, путь которого относительно корня JAR:

URL url = ClassLoader.getSystemClassLoader().getResource("icons/mouse.png");
Icon icon = new ImageIcon(url);
1 голос
/ 15 июля 2009

Я думаю, что getResource получает ресурс относительно местоположения LoadHTMLExample.class. Таким образом, ваш jarfile должен быть структурирован следующим образом:

myjar.jar
 |
 |- ...
 |- LoadHTMLExample.class
 |- ...
 \-- icons
      |
      \- mourse.png

Кроме того, вы можете получать поток через getResourceAsStream, а не URL.

0 голосов
/ 22 мая 2019
Icon icon = new ImageIcon(ClassLoader.getSystemResource("icons/mouse.png"));

Из JavaDoc из getSystemResource():

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

Это найдет ваши иконки даже в jar-файле.

0 голосов
/ 16 июля 2009

final java.net.URL imageURL3 = com.java.html.LoadHTMLExample.class.getResource ("icons /");

работает для приведенной ниже структуры каталогов

myJar.jar | | - ... | - LoadHTMLExample.class | - ... - иконки | - mourse.png

Спасибо за помощь всем

0 голосов
/ 16 июля 2009

Является ли рассматриваемая банка на пути к классам вашей среды выполнения? У меня есть банка с PNG, и я могу воссоздать нули, если я не включу его в classpath Если там есть банка, они уходят.

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