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 просто поразил меня в прямом эфире!

Другие вопросы по тегам