Я пытаюсь написать плагин для IDE NetBeans. Но у меня проблема с поиском правильного пути к некоторому изображению:
Вот моя древовидная структура проекта:
И тестовый код, похожий на этот значок значка dosent wePagesBadge.gif
ImageIcon image = new ImageIcon("webPagesBadge.gif");
JOptionPane.showMessageDialog(null, "Some Messsage","Example",JOptionPane.INFORMATION_MESSAGE,image);
конечно, когда я помещал это изображение в корневую папку, где у меня на локальном компьютере установлен netbeans значок появляется в JOptionPane. Этот путь
C:\Program Files\NetBeans 8.0
Другой пример - когда я не использую Maven Project Type для разработки плагина, но модуль Netbeans Module Тип проекта:
на этот раз изображение появится на JOptionPane. Я потратил много времени, чтобы найти ответ, и у меня нет идеи, как его исправить.
Я нашел ответ, как это исправить. Принудительно использовать код:
ImageIcon image = new ImageIcon("webPagesBadge.gif");
JOptionPane.showMessageDialog(null, "Some Messsage","Example",JOptionPane.INFORMATION_MESSAGE,image);
я использую
ImageIcon image = new ImageIcon(ImageUtilities.loadImage("webPagesBadge.gif"));
JOptionPane.showMessageDialog(null, "Some Messsage","Example",JOptionPane.INFORMATION_MESSAGE,image);
и я помещаю изображение в:
Метод, который я использую для загрузки изображения
ImageUtilities.loadImage("webPagesBadge.gif")
из org.openide.util.ImageUtilities
Плохая практика заключается в том, чтобы размещать ресурсы в исходном пакете
создайте папку my имя ресурсов в разделе src/main/resources, а затем попробуйте прочитать ее, используя
className.class.getClassLoader().getResource("yourImageFile");
Так что это должно делать работу
ImageIcon imageIcon = new ImageIcon(PDFGenerator.class
.getClassLoader()
.getResource("yourIcon.gif"));
ClassLoader
- единственный способ, который я видел, который работает как для проектов Netbeans, так и для упакованных JAR-файлов.
src/main/resources/
а НЕ в папкеsrc/main/java
.