Java w / maven: получение исходников из файла jar - PullRequest
0 голосов
/ 09 февраля 2011

Я пишу приложение с графическим интерфейсом и использую файлы изображений (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;
    }

Предложения

Ответы [ 2 ]

4 голосов
/ 09 февраля 2011

Путь звучит неправильно в вашем втором варианте.По умолчанию maven должен помещать ресурсы в target / classes вместе со скомпилированными классами.Jaring должен принять все это, поэтому добавление "/ resources" звучит для меня странно.Нужно найти gif в testPicLoad.jar! / Com / cmy ...

Вы делаете что-то странное, когда создаете банку?

1 голос
/ 09 февраля 2011

Причина в том, что я использовал затмение, чтобы упаковать банку.Я не знаю почему, но все было так.Когда я использовал maven из командной строки, все работало отлично.

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