2016-12-31 19 views
-1

Я пытаюсь использовать значок на Jlabel, но каждый раз, когда я его запускаю, я получаю «NullPointerException». Он запускается, пока я помещаюсь в полный путь, но я не хочу этого делать, потому что хочу переместить java-программу вокруг среды.Настройка imageIcon без полного пути

jLabel1.setIcon(new ImageIcon(this.getClass().getResource("/data/images/image.jpg"))); 

Я считаю, что проблема находится на пути, который я пытаюсь использовать.

Моя грубая среда проекта:

projectfolder/src 
projectfolder/data/images/image.jpg 

Я попытался с помощью:

/image.jpg 
/data/images/image.jpg 
data/images/image.jpg 
.\\data\\images\\image.jpg 

Что я делаю неправильно?

+0

Файл должен находиться в вашем пути к классу. – camickr

+0

это, я просто использовал «путь», чтобы закончить пример, я исправлю, чтобы предотвратить путаницу. – Exostrike

+0

Докажите нам, что он находится в пути к классам. Какова командная строка, используемая для запуска приложения? –

ответ

0

Class#getResource() возвращает ресурс относительно местоположения вашего класса. Вместо этого используйте ClassLoader#getResource(). Если используется загрузчик класса по умолчанию, он возвращает ресурс относительно пути к классам вашей программы.

this.getClass().getClassLoader().getResource("data/images/image.jpg") 

Вы должны поместить папку данных в папке src. В противном случае папка с данными не содержится в .jar программы.

+0

Нет, это не так, когда путь начинается с косой черты. И он не должен начинаться с косой черты при использовании getCLassLoader(). GetResource(). И нет, он не возвращает ресурсы относительно места выполнения вашей программы. Он загружает ресурсы из класса. –

 Смежные вопросы

  • Нет связанных вопросов^_^