Я пишу приложение с графическим интерфейсом и использую файлы изображений (gif) в качестве иконок. Когда я запускаю приложение в своей IDE - появляются значки. Когда я запускаю его из jar - они терпят неудачу (исключение нулевого указателя на ресурсе)
Структура пакета следующая:
код: src / main / java / com / my / app
resources: src / main / resources / com / my / app
Я написал этот маленький пример:
URL url ;
url = GuiUtils.class.getResource("/com/my/app/gui/fading_lines_blue_64x64.gif");
System.out.println("url: " + url);
url = GuiUtils.class.getResource("/resources/com/my/app/gui/fading_lines_blue_64x64.gif");
System.out.println("url: " + url);
При запуске из IDE:
url: file:/C:/Repositories/V8/trunk/MyApp/build/com/my/app/gui/fading_lines_blue_64x64.gif
url: null
Когда сбежал с банки:
url:null
url:jar:file:/C:/DevEnv/Projects/Viewer/testPicLoad.jar!/resources/com/cmy/app/gui/fading_lines_blue_64x64.gif
Я решил это так, но это явно не правильный способ сделать это:
public static URL getResourceURL(String path) {
URL url = GuiUtils.class.getResource(path);
if (url == null) {
url = GuiUtils.class.getResource("/resources"+path);
}
return url;
}
Предложения