2012-04-21 3 views
0

Прошу извинить мое ограниченное понимание Java Webstart, поскольку я очень недавно в этом разбираюсь.Показать изображение в Java Webstart App

Так что я получил мое приложение работает в JAR файл на моем компьютере, используя этот фрагмент кода в статическом методе (класс расширяет JFrame):

ImageIcon image = new javax.swing.ImageIcon(window.getClass().getResource("/resources/img/loginWindowTop.jpg")); 
//ImageIcon image = new ImageIcon(window.getClass().getResource("/resources/img/loginWindowTop.jpg")); // tried this too 
JLabel imageLabel = new JLabel(image); 
imageLabel.setBounds(rect); 
window.add(imageLabel); 

Он работает при запуске приложения на компьютере непосредственно из JAR-файл. При тестировании с веб-сервера с файлом JNLP, приложение происшествиям показывает это:

java.lang.NullPointerException 
at javax.swing.ImageIcon.<init>(Unknown Source) 
at gui.LoginWindow.create(LoginWindow.java:42) 
at main.Starter.main(Starter.java:13) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at com.sun.javaws.Launcher.executeApplication(Unknown Source) 
at com.sun.javaws.Launcher.executeMainClass(Unknown Source) 
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source) 
at com.sun.javaws.Launcher.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

Я был бы очень признателен, если кто-то может объяснить, что делать. Я искал достаточно времени в Интернете, и никакое решение не помогло мне (пока). Надеюсь, это не потому, что я работаю со статическим JFrame (называемым окном в моем фрагменте)?

+1

Кажется, что 'loginWindowTop.jpg' не находится в Jar, который находится на пути класса времени выполнения JWS-приложения. В чем это состоит? Каково содержание JNLP? –

+1

Для справки, вот рабочий [пример] (https://sites.google.com/site/drjohnbmatthews/googleolympiad). – trashgod

+0

Он должен быть в банке, поскольку он работает, когда я тестирую JAR на своем компьютере или на другом компьютере! Я предполагаю, что путь используется как-то иначе при использовании webstart. - Спасибо за пример, я проработаю! – andreas

ответ

0

Благодаря вашим намекам я наконец нашел способ сделать это. Поскольку мой класс пользователя появляется только используется в статическом образом, я должен был использовать

ImageIcon image = new ImageIcon(LoginWindow.class.getResource("/resources/img/loginWindowTop.jpg")); 

LoginWindow.getClass() будет работать только в нестатической образом.

Спасибо всем за ваш вклад, и я надеюсь, что это поможет другим людям!

1

Откройте банку с помощью WinZip или 7Zip и посмотрите, действительно ли путь /resources/img/loginWindowTop.jpg, и что с учетом регистра. (Особенно имя файла должно быть в файловой системе в этом верблюжьем футляре.) Немного эзотерическая ошибка будет с загрузчиками классов, тогда вы можете попробовать вместо window.getClass... просто getClass....

+0

Фактический путь непосредственно в JAR - «ресурсы/img/loginWindowTop.jpg». Но когда я печатаю это, он не работает локально, поэтому я использовал «/» в начале. Я вызываю изображение из класса в папке «gui/LoginWindow.class» – andreas

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