Загрузка ImageIcon из JAR или файловой системы - PullRequest
11 голосов
/ 15 января 2012

У меня есть простая программа, которая должна отображать изображения.Я знаю, как это сделать, запустив код из Eclipse, и я знаю, как это сделать, запустив файл JAR, но я бы хотел, чтобы решение работало в обоих случаях.

Проект Eclipse таков:

- Project (java)
  - src
    - controller
      - Main.java
    - ui
      - Display.java
  - images
    - image.jpg

Фрагмент кода, который работает из Eclipse:

ImageIcon image = new ImageIcon("images/image.jpg);

Тот, который работает для JAR (все в одном файле JAR):

java.net.URL imgURL = getClass().getResource("/images/image.jpg");
ImageIcon image = new ImageIcon(imgURL);

Что мне нужно изменить, чтобы получить один кусок кода, который работает в обеих ситуациях?

1 Ответ

9 голосов
/ 15 января 2012

Поместите папку images в папку src, и Eclipse скопирует изображения в целевую папку (bin или classes, как правило), что сделает их доступными из classpath, как если быони были в вашей банке в выпущенной версии вашего приложения.

getResource() не выглядит в банке.Это выглядит в classpath загрузчика классов.Таким образом, не важно, находится изображение в банке или нет.Это должно быть в classpath.И очевидно, что целевая папка eclipse (обычно bin или classes) находится в пути к классам приложения, когда вы запускаете ее из Eclipse.

...