Загрузка 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.