Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Проблема в том, что у меня был этот проект в моем профиле Windows ... у которого был «!» в нем ... (DeNitE! -> было именем моего профиля Windows)
Как только я сменил его на DeNitE (без!), он отлично работал ...
У меня такая же проблема .. Вы можете использовать это.
Image Icon= new ImageIcon(new WE4().getClass().getResource("IC.jpg"))
Здесь WE4 - это имя моего класса. Надеюсь, это поможет.
Два простых шага:
1 - добавьте папку в «Путь сборки»;
2 - Используйте это:
InputStream url = this.getClass().getResourceAsStream("/load04.gif");
myImageView.setImage(new Image(url));
Другая работа вокруг - если вы поместите свой файл ресурсов, ваш .jar-файл в том же месте, он должен работать. Единственный недостаток - вы должны всегда иметь ресурсы с файлом jar.
Если это не проблема, вы можете сделать это таким образом.
Прекрасно работает для меня. Проверьте, что у вас может быть другое.
Шаги:
package com.stackoverflow.test;
import java.net.URL;
import javax.swing.*; // Wild carded for brevity.
// Actual code imports single classes
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
URL url = Main.class.getResource(
"/resources/stackoverflow.png");
ImageIcon icon = new ImageIcon(url);
JFrame frame = new JFrame();
frame.add(new JLabel(icon));
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
FYI, та же настройка работает в eclipse просто отлично и
Шаги:
URL url = Main.class.getResource("/stackoverflow.png");
UPDATE
Как правило, один раз вы запускаете класс (т. е. щелкните правой кнопкой мыши на классе и запустите в качестве приложения Java), будет настроена конфигурация запуска. Вам нужно будет установить ее как точку запуска в манифесте. Но вот как это сделать вручную.
Шаги:
com.stackoverflow.test.Main
[/g14] EDIT
Манифест:
Manifest-Version: 1.0
Rsrc-Class-Path: ./
Class-Path: .
Rsrc-Main-Class: com.stackoverflow.test.Main
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
Извлеченная банка:
[/g16]
Для создания исполняемого JAR-файла из Eclipse мы можем обратиться к статье «Создание Runnable Jars в Eclipse (или другой IDE ... или вручную):« ( https: //www.cefns.nau. edu / ~ edo / Classes / CS477_WWW / Docs / RunnableJarsinEclipse.html ), он упомянул, что нам нужно сделать четыре вещи как
Но для файла изображения в приведенном выше примере кода он создает только ImageIcon, он не создает SWT-изображение, и есть много вопросы в Интернете о том, как получить SWT-изображение из URL-адреса или как преобразовать ImageIcon в SWT I mage, ниже приведен пример кода для получения SWT-изображения из URL-адреса,
Image imgSWT=null; // Image class is the SWT Image class
ImageDescriptor imgDesc=null;
java.net.URL imgURL = YourClassName.class.getResource("path/image_filename");
if (imgURL != null) {
imgDesc = ImageDescriptor.createFromURL(imgURL);
imgSWT = imgDesc.createImage();
}
Я обнаружил, что когда вы изменили:
Пакетные библиотеки, вложенные в сгенерированный jar
blockquote>to
Необходимый экстракт библиотеки в сгенерированный jar
blockquote>в настройке Set Launch, который работал для меня.
Если вам не нужны файлы в банке, это, вероятно, самый простой способ сделать это:
header = ImageIO.read(new File("./resources/header.jpeg"));
заголовок должен быть Image / BufferedImage. Это относится к папке, в которой находится runnable jar, и ищет папку с названием ресурсов. http://i.stack.imgur.com/x8xtO.png