2017-02-11 7 views
0

Я использую JetBrains IntelliJ IDEA IDE. Это то, что я использовал для создания файла jar. Запуск файла jar из IDE, все выглядит отлично.IntelliJ IDEA: Jar не загружает изображения при работе за пределами IDE

Запуск контейнера с терминала не загружен ни одним из изображений.

Я чувствую, что от чтения вокруг этого, что это имеет отношение к относительным путям, используемым для изображений ... но я не могу понять это. Я пробовал различные структуры папок проекта, предложенные на форумах JetBrains и StackOverflow, но безрезультатно. Все нормально, пока я не запустил банку вне IDE.

Моя текущая структура проекта:

enter image description here

Как на Земле я создаю файл банку, который работает во всем мире?

+0

вы установите рабочий каталог в настройках проекта ? ('res'?) и является ли папка' res' экспортироваться в артефакт баннера? вы можете проверить, перейдя к сборке артефакта -> «Редактировать» и посмотрите, включен ли он в «Макет вывода» – Moira

+0

@ 1blustone Не вручную нет .. где именно это делается?Все работает отлично, за исключением случаев, когда jar запускается за пределами ide – Totem

+0

, предполагая, что вы используете систему артефактов для сборки своей банки, Build -> Build artifacts -> Edit ... -> Output Layout -> the green + button -> Directory Содержание, хотя я не уверен, что вам придется удалить res/prefix из ваших путей (т. Е. Я не уверен, что IntelliJ включает в себя _contents_ или сам каталог.) [Также можно установить тип папки в " Resource folder ", и я считаю, что это будет сделано автоматически.] (Http://stackoverflow.com/questions/33314388/how-to-access-images-from-a-resource-folder-in-intellij-idea-without- having-to-g) – Moira

ответ

1

Использование папок ресурсов IntelliJ - это, вероятно, правильный путь.

Просто щелкните правой кнопкой мыши папку res, перейдите на страницу Mark Directory As и выберите Resources.

enter image description here

Затем вы можете получить доступ к файлам в этой папке, просто по имени (без res/ префикса.)

Работа визуальный пример:

enter image description here

+0

Единственный вариант в разделе «Отметить каталоги как ..» - «Исключено». – Totem

+0

Единственная папка с другими доступными опциями - это папка «out» – Totem

+0

ok. Я думал, что это возможно, и изменил ее на ресурсы, но все еще нет. кубики ... Я перезапущу проект и посмотрю – Totem

1

Источник и ресурсосбережение корни обрабатываются иначе.

Все файлы из каталогов ресурсов всегда будут скопированы в выходной путь. Как было предложено в другом ответе, одним из решений является configure this directory as Resources root. Это предпочтительный способ заставить его работать.

Если вы хотите, чтобы файлы из корней источника копировались на выход, вы должны указать specify the patterns для файлов, которые будут скопированы.

Если проект основан на Maven или Gradle, эти шаблоны не влияют, и IDE будет использовать правила соответствующей системы сборки для обработки ресурсов.

0

Хорошо, вот что сработало для меня. Я открыл структуру проекта (Ctrl-Alt-Shift + S) и перешел на вкладку «Модули». Оттуда я мог легко выбрать папку из списка и щелкнуть, чтобы создать каталог ресурсов. Я был тогда в состоянии получить доступ к ресурсам, как URL-й с

URL imageUrl = ClassLoader.getSystemResource("image.png") 

Нет необходимости использовать путь к изображению, просто это фактическая name.ext