2015-02-05 3 views
7

Я пытаюсь создать .jar, который содержит нестандартные изображения и шрифты, которые я добавил в папку ресурсов в моем проекте. Я могу загрузить их в свой проект со следующим кодом.Intellij ресурсы не встроенные артефакт

URL url = ClassLoader.getSystemResource("./some_font.ttf"); 

Font font = Font.createFont(Font.TRUETYPE_FONT, url.openStream()); 

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

ответ

1

Intellij обрабатывает папки, обозначенные как «ресурсы», как дополнительные каталоги классов, которые могут быть обнаружены его собственным автозаполнением или в вашей функции запуска/отладки. Попробуйте щелкнуть правой кнопкой мыши по этой папке и выбрать «Отметить каталог как»> «Снять отметку с ресурсов», чтобы проверить это предположение. Если он перестает работать, вам необходимо предоставить более надежный путь, учитывающий, где этот файл находится внутри вашего результирующего jar-файла.

+0

Это то, что я пробовал. Кажется, это не проблема. – Beryllium

+0

Трудно предположить, что может быть проблемой, не видя фактического проекта, но предполагая, что основная структура проекта состоит из 2 должным образом отмеченных папок/src и/resources и создания jar по умолчанию из решения «Модули с зависимостями ...» может быть ссылкой к ресурсу как URL url = ClassLoader.getSystemResource ("some_font.ttf"); потому что он должен быть размещен на корневом уровне внутри банки и может быть адресован непосредственно – Aerondir

7

Вы можете создать собственные артефакты в структуре проекта: enter image description here

Там вы можете добавить содержимое каталога папки ресурсов. Нажмите зеленый плюс и перейдите к своей папке и добавьте ее. Затем вы можете щелкнуть build-> build artifacts -> build. В моем случае банка создается в папке ./out/artifacts.

+1

Его вид хромой от IntelliJ, почему ресурсы не считаются компилятивными. – igr

Смежные вопросы