2015-04-27 3 views
8

Я использую IntelliJ IDEA 14, и я хочу добавить файл вне src в файл JAR. Это моя текущая структура проекта.Как добавить файл ресурсов в JAR в IntelliJ

Я хочу добавить файл layout.txt и saveddata.txt в исполняемый файл JAR-файла. Я искал эту информацию некоторое время не могу найти решение

Если вам нужно увидеть мой код. Это, как я читаю файл

private Path layoutPath = Paths.get("resources/layout.txt"); 
content = new String(Files.readAllBytes(layoutPath)); 

Вот моя структура проекта

Layout Structure

ответ

9
  1. Создайте папку с именем «ресурсы» на том же уровне, что и «ЦСИ»
  2. правой кнопкой мыши в папке выберите «Отметить каталог как -> Корень ресурсов»

enter image description here

+0

Все еще давая мне исключение NoSuchFileException. Я отметил его как Resource Root. –

+2

Предположительно, вы имеете в виду, что ваше приложение предоставляет вам NSFE. Отдельный вопрос, если это так, отправьте свой код. Общая форма - '' 'getClass(). GetResource ("/path/image.png ")' ''. –

+0

Я добавил код. Вы можете проверить его еще раз? Спасибо: D –

4
  • Создайте новый каталог с именем «ресурсы» в корневом каталоге проекта.
  • Щелкните правой кнопкой мыши по этому каталогу и выберите «Отметить каталог как» ==> «Ресурс корня».
+0

Все еще давая мне NoSuchFileException после того, как я восстановил –

+0

@Renges: код использует относительный путь, что заставляет его зависеть от текущего рабочего каталога JVM, который запускает тесты. Более надежным способом чтения файлов ресурсов является «getClass(). GetClassLoader(). GetResourceAsStream()» или, если необходимо, «getClass(). GetClassLoader(). GetResource()». В среде J2EE вы обычно используете «Thread.currentThread(). GetContextClassLoader(). GetResourceAsStream()». – Ranjeet

+0

@ Ranjeet, я думаю, что 'getClassLoader(). GetResourceAsStream' - правильный путь. Можете ли вы отредактировать свой ответ и разработать? спасибо. – 0x90

-1

Это все еще для меня. Я пробовал:

+ "Mark Directory As" ==>"Resources Root" 
+ getClassLoader().getResourceAsStream() 
+ getClass().getClassLoader().getResource() 
and Thread.currentThread().getContextClassLoader().getResourceAsStream() 
Смежные вопросы