Загрузка ImageIcon из JAR или файловой системы

У меня есть простая программа, которая должна отображать изображения. Я знаю, как сделать это, запустив код из 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

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

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