Видимо, вы изменили:
ladeBilder(new File("/img/settings"));
на
ladeBilder(new File(String.valueOf(
(SettingsController.class.getResource("/img/settings")))));
, и он перестал работать. Проблема в том, что getResource
не возвращает имя файла. Он возвращает URL
. Затем вы используете String.valueOf(Object)
, чтобы превратить URL
в строку, а затем обрабатывает строку как имя файла.
Но это не имя файла. Это строка URL. Это будет выглядеть примерно так:
jar:file:/path/to/jar!/img/settings
Так что, когда вы new File(urlString)
в строке URL, вы получите объект File
, который ссылается на несуществующий файл. И в конечном итоге вы получаете NPE (очевидно).
Как это исправить?
Что вы пытаетесь сделать, это итерировать ресурсы в данном дереве в пути к ресурсам. Проще говоря, вы не можете сделать это с помощью файловых библиотек ввода-вывода (File
, Path
, Files
, и так далее), поскольку пространство имен ресурса не является пространством имен файловой системы.
Вам нужноиспользовать альтернативный метод. Есть множество способов сделать это;см. следующее:
Это работало до того, как я добавил платформу Maven.
Это не ошибка Maven.
Лучшей характеристикой было бы сказать, что это работало, когда вы обращались к ресурсам из файловой системы в вашей среде разработки. Он сломался, потому что вы включили ресурсы в файл JAR и изменили свой код для доступа к ним оттуда.
Это могло бы произойти независимо от того, какой подход вы использовали для создания файла JAR.