Я пытаюсь загрузить изображение, которое хранится в папке / src / main / resources. Однако, когда я это делаю, я продолжаю сталкиваться с NullPointerException, который возникает из-за того, что ресурс не найден.
Вот фрагмент кода:
try {
String path = this.getClass().getClassLoader().getResource("bern.png").toString();
} catch (IOException ex) {
System.out.println(path);
}
Вот изображение файла моего проектадерево:
А вот изображение моего целевого дерева файлов сборки:
Вот трассировка стека NullPointerException: https://pastebin.com/KqJVxWEL
Я попытался очень хорошо использовать все возможные пути для файла изображения, о котором я могу подумать. (/src/main/resources/bern.png, src / main / resources / bern.png, /bern.png и т. д.).
Я также пытался использовать getClass().getClassLoader().getResource()
вместо getClass().getResource()
,Из того, что я понимаю, единственная разница между Class
и ClassLoader
версией getResource()
заключается в том, что версия Class
не является абсолютно абсолютной по отношению к корню, тогда как версия ClassLoader
есть.
Когда я запускаю getClass().getResource("").toPath()
, я получаю путь, ведущий к каталогу classes
. Это соответствует тому, что я читал о getResource()
методе работы с целевым деревом файлов сборки. Тем не менее, я не вижу папки ресурсов, отображаемой в целевой сборке;Я думаю, что это суть моей проблемы. Я просто не уверен, как это исправить.
Я знаю, что этот вопрос задавали много раз прежде, но ответы на другую версию этого вопроса не сильно помогли мне.
Я использую NetBeans 11, и этот проект выполняется в системе сборки Maven. В прошлом я мало работал с Maven, так что извините, если эту проблему очень легко решить.
Кто-нибудь знает, как я подхожу к этому неправильно?
РЕДАКТИРОВАТЬ: Проблема заключается не в моей структуре проекта или коде, как показано в коде, правильно компилируемом при запуске с использованием mvn
из командной строки. В результате проблема связана именно с NetBeans и с тем, как он просматривает папку ресурсов.