В Eclipse, когда я запускаю код, это работает:
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("test viewing images");
frame.setSize(600,300);
frame.setLocationRelativeTo(null); // centered on monitor
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/**
* Menu Bar stuff
*/
JMenuBar menuBar;
JMenu menu;
JMenuItem menuItem;
// MENU BAR
menuBar = new JMenuBar();
frame.setJMenuBar(menuBar);
menuBar.setVisible(true);
// MENU 1
menu = new JMenu("File");
menuBar.add(menu);
// MENU 1 ITEM
ImageIcon icon = new ImageIcon("src/Action-exit-icon.png");
menuItem = new JMenuItem("Exit Program", icon);
menu.add(menuItem);
frame.setVisible(true);
}
}
И здесь структура файла из моего проводника пакетов:
ShowImage (project)
> src / Main.java
> src / Action-exit-icon.png
Кроме того, это рабочее пространство находится в каталоге Z:\eclipse_projects
Я вижу значок ImageIcon icon = new ImageIcon ( "src/Action-exit-icon.png" ); работает красиво, а menuBar выполняет эту работу.
Теперь давайте экспортируем этот проект, и я напишу JAR своему другу.
- Щелкните правой кнопкой мыши проект > Выбрать экспорт
- Выберите Java > Runnable JAR File
- Я выбираю главный файл в конфигурации запуска
- Назначение экспорта: мой рабочий стол
- Обработка библиотеки: извлечение необходимых библиотек в сгенерированный JAR
- перейдите на мой рабочий стол, дважды щелкните ShowImage.jar
Появится JFrame, но Action-exit-icon.png не отображается вообще.
Когда я открываю ShowImage.jar, чтобы просмотреть его содержимое, я вижу Main.class, Action-exit-icon.png, META-INF.
Хорошо, я серьезно запутался в том, как ссылаться на изображение или на любой ресурс. Что я делаю не так?