0

У меня есть приложение, которое отлично работает, когда я не пытаюсь использовать его в качестве приложения для веб-запуска, но когда я конвертирую его в один из Netbeans, он взлетает вверх. Консоль показывает исключение нулевого указателя при попытке получить ресурс, расположенный в зависимой библиотеке. Сама строка кода захватывает файл .png в этом файле библиотеки и использует его для значка окна. Строки кода, которые убивают именно:Веб-запуск не находит системный ресурс

java.net.URL url = ClassLoader.getSystemResource("/com/my/icon/someimage.png"); 
Toolkit kit = Toolkit.getDefaultToolkit(); 
Image img = kit.createImage(url); // fails with null pointer exception 

Если я не пытаюсь сделать это как начать веб-приложение, то у меня есть ноль проблем. Он работает отлично. Web start = failboat. Код подписан, если это имеет значение. Файл библиотеки, который используется, является одним большим банком, который содержит 3 файла библиотеки, которые я создал, и еще 4 других, которые мне не нужны. Нужно ли мне также подписывать файл библиотеки? Возможно, это проблема сама по себе?

EDIT:

Если я достаю эти строки кода, веб-приложение работает без каких-либо проблем.

Здесь ошибка:

Exception in thread "AWT-EventQueue-2" java.lang.NullPointerException 
    at sun.net.util.URLUtil.getConnectPermission(Unknown Source) 
    at sun.awt.SunToolkit.checkPermissions(Unknown Source) 
    at sun.awt.SunToolkit.createImage(Unknown Source) 
    at DDSC.initComponents(DDSC.java:265) 
    at DDSC.<init>(DDSC.java:103) 
+2

Любая конкретная причина вы используете 'getSystemResource' вместо' getResource'? – Powerlord

+0

Спасибо. Я использовал getSystemResource, поскольку он работал до этого, и я никогда не потрудился даже попробовать getResource из-за того, что он не разбирается в методе. –

+0

Согласитесь с @Powerlord, это определенно не системный ресурс, и было чистой удачей, что он работал как приложение без JWS. См. [Информация о встроенных ресурсах. страница] (http://stackoverflow.com/tags/embedded-resource/info) для правильного метода/подхода (в основном, что предложил Powerlord, с чуть более подробной информацией). –

ответ

1

Попробуйте использовать getClassLoader() getResource() с только имя файла..
Полный путь не требуется и getClassLoader() обрабатывает магию через WebStart & также локально:

String filename = "someimage.png"; 
Image resultImg = null;  
URL url = getClassLoader().getResource(filename); 
if (url != null) 
    resultImg = Toolkit.getDefaultToolkit().getImage(url); 
+0

Официальная поддержка Webstart также доступна через: https://docs.oracle.com/javase/tutorial/deployment/webstart/index.html –

Смежные вопросы