Ресурс из src / main / ресурсов не найден после сборки с maven

Здравствуйте, я использую файл конфигурации из src / main / resources в моем приложении java. Я читаю его в своем classе следующим образом:

new BufferedReader(new FileReader(new File("src/main/resources/config.txt"))); 

Итак, теперь я строю это с помощью maven, используя mvn assembly:assembly . Вот немного для этого в моем pom.xml:

  maven-assembly-plugin 2.3  TestSuite  jar-with-dependencies    true com.some.package.Test     

Поэтому, когда я запускаю свое приложение, я получаю эту ошибку:

 src\main\resources\config.txt (The system cannot find the path specified) 

Но когда я нажимаю правой кнопкой мыши на собранную банку, я вижу ее внутри, кто-нибудь знает, что я делаю неправильно?

Ресурсы из src/main/resources будут помещены в корень пути к classам, поэтому вам нужно будет получить ресурс как:

 new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/config.txt"))); 

Вы можете проверить, просмотрев файл JAR / WAR, созданный maven, поскольку вы найдете файл config.txt в корне вашего архива.

FileReader читает файлы из файловой системы.

Возможно, вы намеревались использовать что-то вроде этого, чтобы загрузить файл из пути к classу

 // this will look in src/main/resources before building and myjar.jar! after building. InputStream is = MyClass.class.getClassloader() .getResourceAsStream("config.txt"); 

Или вы можете извлечь файл из банки, прежде чем читать его.

Ресурсы, которые вы добавили в src / main / resources, будут скопированы в процессе сборки для целей / classов, к которым можно получить доступ, используя:

 ...this.getClass().getResourceAsStream("/config.txt"); 

Я думаю, что assembly плагина помещает файл в путь classа. Место будет отличаться в JAR, чем вы видите на диске. Распакуйте полученный JAR и посмотрите, где находится файл.

  • Добавить путь maven-build-class к плагину реализации плагинов
  • Имея стороннюю банку, включенную в затененную банку Maven, не добавляя ее в локальный repository
  • Импорт проекта maven в eclipse
  • Maven: включение jar не найден в публичном репозитории
  • Есть ли вообще исключить артефакты, унаследованные от родительского ПОМ?
  • запустить основной class проекта Maven
  • Различные зависимости для разных профилей сборки
  • Как настроить путь сборки Eclipse для использования зависимостей Maven?
  • Создание исполняемого банку с maven?
  • Maven: команда для обновления репозитория после добавления зависимости от POM
  • Как изменить уровень регистрации maven для отображения только предупреждений и ошибок?
  • Interesting Posts

    Уведомление не отображается в Oreo

    Могу ли я заставить пользователя iPhone обновить приложение?

    Firefox продолжает устанавливать стартовую страницу на стартовую страницу firefox после того, как я ее закрою

    Каков правильный способ обработки событий на C ++?

    Windows 8.1 Acer v5 blackscreen как безопасный режим

    Как гарантировать порядок оценки аргументов при вызове функционального объекта?

    AES algo – проблема с расшифровкой

    Создать% от нефильтрованного итога в Excel

    Как эта `this` ссылка на внешний class исчезает из-за публикации экземпляра внутреннего classа?

    Почему методы расширения допускаются только в не-вложенном, неэквивалентном статическом classе?

    Службы Java перестают работать, когда пользователь выходит из системы

    Является ли добавление и умножение с плавающей запятой ассоциативным?

    Преобразование объекта JS в массив с помощью jQuery

    Как устранить ошибку «Имя локального устройства уже используется»?

    Как найти длину массива?

    Давайте будем гением компьютера.