Проблемы с getResource () после сборки maven - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь загрузить файл из папки ресурсов, но не могу заставить его работать после сборки / упаковки

URL databaseURL = this.getClass().getClassLoader().getResource("blacklisted.words");
List<String> blacklistedWordsDatabase = Files.readAllLines(Paths.get(databaseURL.getPath()), StandardCharsets.UTF_8);

Это прекрасно работает, когда я запускаю свой код из IDE, нопосле mvn package я запускаю java -jar target/project-0.0.1-jar-with-dependencies.jar и получаю

java.nio.file.NoSuchFileException file:/var/www/project/target/project-0.0.1-jar-with-dependencies.jar!/blacklisted.words

Но проверка архива blacklisted.words явно находится в корневой папке фляги ... Любые подсказки о том, что я могу сделать здесь не так?

1 Ответ

0 голосов
/ 16 ноября 2018

Вы используете Files.readAllLines, который ожидает настоящий файл / путь. Это будет работать в «распакованной» среде, например, когда вы тестируете в IDE или запускаете mvn test / mvn exec, но не будет работать с JAR, где файлы упакованы в архив. Нет файлов и путей!

Вместо этого вы можете получить InputStream упакованного ресурса и использовать его:

try (InputStream resource = this.getClass().getClassLoader().getResource("blacklisted.words")) {
    List<String> blacklistedWordsDatabase = new BufferedReader(
        new InputStreamReader(
            resource,
            StandardCharsets.UTF_8
        )
    ).lines()
    .collect(Collectors.toList());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...