getResource внутри JAR
От: Entwickler Россия  
Дата: 23.11.04 13:25
Оценка:
Странное дело :

была конструкция — jButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/ikonka.gif")));
В подкаталоге resources — лежат иконки
Всё прекрасно работало как при запуске class-файла, так и в упакованном в JAR виде. Прозошло что-то, после чего при запуске JAR-а ресурсы перестали загружаться. Причём JAR-ы которые я сделал месяц назад работают, а новые лишены иконок на кнопках. Что ЭТО ???

P.S. В Гугле нашёл советы делать getResource("resources/ikonka.gif") вместо getResource("/resources/ikonka.gif") — не помогает (да и работало раньше без этого).

JAVA 1.4.2
Re: getResource внутри JAR
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 23.11.04 13:40
Оценка:
Здравствуйте, Entwickler, Вы писали:

E>Странное дело :


E>была конструкция — jButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/ikonka.gif")));

E>В подкаталоге resources — лежат иконки
E>Всё прекрасно работало как при запуске class-файла, так и в упакованном в JAR виде. Прозошло что-то, после чего при запуске JAR-а ресурсы перестали загружаться. Причём JAR-ы которые я сделал месяц назад работают, а новые лишены иконок на кнопках. Что ЭТО ???

E>P.S. В Гугле нашёл советы делать getResource("resources/ikonka.gif") вместо getResource("/resources/ikonka.gif") — не помогает (да и работало раньше без этого).


Это в том случае когда ты загружаешь ресурс, расположенные относительно класса в котором вызывается тот код по адресу "resources/ikonka.gif".
Если же тебе надо загрузить ресурсы относительно корня jar (скажем относительно корня classpath) используется абсолютный путь "/resources/ikonka.gif".

E>JAVA 1.4.2


А ты уверен что твои ресурсы лежат в том же jar файле что и класс который их грудит и что клсаа гружится именно из jar?

Покажи структуру jar (где класс — где ресурсы).
ICQ #333355130
Re: getResource внутри JAR
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 23.11.04 13:40
Оценка:
Здравствуйте, Entwickler, Вы писали:

E>Странное дело :


E>была конструкция — jButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/ikonka.gif")));

E>В подкаталоге resources — лежат иконки
E>Всё прекрасно работало как при запуске class-файла, так и в упакованном в JAR виде. Прозошло что-то, после чего при запуске JAR-а ресурсы перестали загружаться. Причём JAR-ы которые я сделал месяц назад работают, а новые лишены иконок на кнопках. Что ЭТО ???

E>P.S. В Гугле нашёл советы делать getResource("resources/ikonka.gif") вместо getResource("/resources/ikonka.gif") — не помогает (да и работало раньше без этого).


Это в том случае когда ты загружаешь ресурс, расположенные относительно класса в котором вызывается тот код по адресу "resources/ikonka.gif".
Если же тебе надо загрузить ресурсы относительно корня jar (скажем относительно корня classpath) используется абсолютный путь "/resources/ikonka.gif".

E>JAVA 1.4.2


А ты уверен что твои ресурсы лежат в том же jar файле что и класс который их грудит и что клсаа гружится именно из jar?

Покажи структуру jar (где класс — где ресурсы).
ICQ #333355130
Re[2]: getResource внутри JAR
От: Entwickler Россия  
Дата: 23.11.04 13:52
Оценка:
Здравствуйте, Lucker, Вы писали:

L>Покажи структуру jar (где класс — где ресурсы).


Каталог с классами c:\prog\bin
Каталог с ресурсами c:\prog\bin\resources

делаю в c:\prog\bin : jar.exe cvfm programma.jar MANIFEST.mf *.class resources
получаю programma.jar внутри которого классы и подкаталог resources с иконками.
Re[3]: getResource внутри JAR
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 23.11.04 13:55
Оценка:
Здравствуйте, Entwickler, Вы писали:

E>делаю в c:\prog\bin : jar.exe cvfm programma.jar MANIFEST.mf *.class resources

E>получаю programma.jar внутри которого классы и подкаталог resources с иконками.

Ок, а запускаешь то используя классы в jar? Команду покаж
ICQ #333355130
Re[4]: getResource внутри JAR
От: Entwickler Россия  
Дата: 23.11.04 14:01
Оценка:
Здравствуйте, Lucker, Вы писали:

L>Здравствуйте, Entwickler, Вы писали:


E>>делаю в c:\prog\bin : jar.exe cvfm programma.jar MANIFEST.mf *.class resources

E>>получаю programma.jar внутри которого классы и подкаталог resources с иконками.

L>Ок, а запускаешь то используя классы в jar? Команду покаж


java -jar programma.jar
Re[5]: getResource внутри JAR
От: Entwickler Россия  
Дата: 23.11.04 18:15
Оценка:
L>>Ок, а запускаешь то используя классы в jar? Команду покаж
E>java -jar programma.jar

всё даже круче : кладу иконки вместе с классами, правлю ссылку на картинку — jButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("ikonka.gif")))

Картина таже : после упаковки в JAR — иконки перестают отображаться !!!
Re[6]: getResource внутри JAR
От: Entwickler Россия  
Дата: 23.11.04 19:30
Оценка:
Многочасовая разборка показала что глюки не у меня.

Jar (тот самый с картинками внутри) прекрастно работает в каталоге "C:\PROGRAMMA\" и перестаёт грузить ресурсы через getResource() если его положить "C:\PROGRAMMA!\". Эксперимент показал что тоже самое происходит если в пути к Jar-у есть хотябы один знак "!" (даже "c:\a\b\c!\d\e\f\moy.jar").

Что это: баг или задокументированная фича ?
Re[7]: getResource внутри JAR
От: Protey Россия  
Дата: 24.11.04 08:03
Оценка:
Здравствуйте, Entwickler, Вы писали:

E>Многочасовая разборка показала что глюки не у меня.


E>Jar (тот самый с картинками внутри) прекрастно работает в каталоге "C:\PROGRAMMA\" и перестаёт грузить ресурсы через getResource() если его положить "C:\PROGRAMMA!\". Эксперимент показал что тоже самое происходит если в пути к Jar-у есть хотябы один знак "!" (даже "c:\a\b\c!\d\e\f\moy.jar").


E>Что это: баг или задокументированная фича ?


Гм, а манифест что содержит?
Re[7]: getResource внутри JAR
От: Blazkowicz Россия  
Дата: 24.11.04 09:01
Оценка:
Здравствуйте, Entwickler, Вы писали:

E>Многочасовая разборка показала что глюки не у меня.


E>Jar (тот самый с картинками внутри) прекрастно работает в каталоге "C:\PROGRAMMA\" и перестаёт грузить ресурсы через getResource() если его положить "C:\PROGRAMMA!\". Эксперимент показал что тоже самое происходит если в пути к Jar-у есть хотябы один знак "!" (даже "c:\a\b\c!\d\e\f\moy.jar").


E>Что это: баг или задокументированная фича ?


Задокументированая фича. Дело в том чо восклицательный знак в ссылках Java для URLClassLoader обозначает начало jar файла. Чтобы разделить физический путь на диске и путь в архиве. Там с этим знаком ещё какие-то гадости есть. Точно не помню.
Re[7]: getResource внутри JAR
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 24.11.04 10:04
Оценка:
Здравствуйте, Entwickler, Вы писали:

E>Многочасовая разборка показала что глюки не у меня.


E>Jar (тот самый с картинками внутри) прекрастно работает в каталоге "C:\PROGRAMMA\" и перестаёт грузить ресурсы через getResource() если его положить "C:\PROGRAMMA!\". Эксперимент показал что тоже самое происходит если в пути к Jar-у есть хотябы один знак "!" (даже "c:\a\b\c!\d\e\f\moy.jar").


E>Что это: баг или задокументированная фича ?


Мне интересно другое. Где в вопросе фигурирует путь со знаком ! ?
ICQ #333355130
Re[8]: getResource внутри JAR
От: Entwickler Россия  
Дата: 24.11.04 13:22
Оценка:
Здравствуйте, Lucker, Вы писали:

L>Мне интересно другое. Где в вопросе фигурирует путь со знаком ! ?


Типа, если бы в вопросе фугурировал путь со знаком "!", то всё было-бы понятно сразу ?
Если бы я знал где засада — сам-бы не полез...
Re[7]: getResource внутри JAR
От: dshe  
Дата: 24.11.04 16:35
Оценка:
Здравствуйте, Entwickler, Вы писали:

E>Многочасовая разборка показала что глюки не у меня.


E>Jar (тот самый с картинками внутри) прекрастно работает в каталоге "C:\PROGRAMMA\" и перестаёт грузить ресурсы через getResource() если его положить "C:\PROGRAMMA!\". Эксперимент показал что тоже самое происходит если в пути к Jar-у есть хотябы один знак "!" (даже "c:\a\b\c!\d\e\f\moy.jar").


E>Что это: баг или задокументированная фича ?


Это баг 4730642
Можешь за него проголосовать.
--
Дмитро
Re[8]: getResource внутри JAR
От: Keeper_andrew Беларусь  
Дата: 22.09.06 08:36
Оценка:
Здравствуйте, dshe, Вы писали:

D>Здравствуйте, Entwickler, Вы писали:


D>Это баг 4730642

D>Можешь за него проголосовать.

Так как сейчас поступать? Я например не гарантирую что мой жар не будет запускаться с путем содержащим "!";
Re[9]: getResource внутри JAR
От: Blazkowicz Россия  
Дата: 22.09.06 09:43
Оценка:
Здравствуйте, Keeper_andrew, Вы писали:

K_>Так как сейчас поступать? Я например не гарантирую что мой жар не будет запускаться с путем содержащим "!";


Инсталлер напиши и валидируй путь куда твоя софтина ставится.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.