Java getResource() не работает
Это сводит меня с ума. У меня есть проект NetBeans в папке со следующей структурой:
MyProject
---- build
---- src
---- resources
в src мой код находится в пакетах. То, что я пытаюсь сделать, это использовать
getClass().getResource("/resources/new.png");
из класса в пакете com.my.package, но он просто отказывается работать! Образ "new.png" находится в папке ресурсов. Я что-то здесь упускаю?
После большой игры и перемещения изображения "new.png" здесь и там, чтобы увидеть, когда оно найдет изображение, оно наконец заработало, но только когда я поместил изображение в папку сборки. Так что я должен сделать, чтобы эта работа?
редактировать: извините, неверная строка в параметре метода. Исправлено сейчас
3 ответа
Я не знаком с NetBeans, но проблема, вероятно, в том, что resources
папка (или корень проекта, в этом отношении) не находится на пути к классам, в отличие от build
,
Вам необходимо настроить NetBeans для добавления корневой папки или resources
в путь к классу, и загрузить файл относительно там.
Смотрите также этот вопрос: Java - getClassLoader (). GetResource() сводит меня с ума
Это отлично работает:
BufferedImage image = ImageIO.read(getClass().getClassLoader().getResourceAsStream("file_name"));
берегись с
ImageIO.read(getClass().getClassLoader().getResourceAsStream("file_name"));
... в окнах вы получите строку в кодировке URL с%20 для пробелов, поэтому, если вы хотите использовать этот путь для загрузки файла, сначала вызовите pathString.replace ("%20", " ") ... это $hice просто поразил меня в прямом эфире!