2012-04-21 16 views
0

Java Webstartに関する私の限られた理解を失望しますので、私はこれについて非常に新しいです。Java Webstart Appの画像を表示

だから私は(クラスはJFrameのを拡張する)静的メソッドでは、このスニペットを使用して、自分のコンピュータ上でJARファイルで働く私のアプリを得た:

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ファイルを使用して、Webサーバーからテストする場合、この示すアプリがクラッシュ:誰かが何をすべきかを説明することができれば

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'は、JWSアプリケーションのランタイムクラスパスにあるJarにないようです。 Jarはそれに含まれるものは何ですか? JNLPの内容は何ですか? –

+1

参考として、実際の[例](https://sites.google.com/site/drjohnbmatthews/googleolympiad)です。 – trashgod

+0

私は自分のコンピュータや別のコンピュータ上のJARをテストするときに動作するので、jarファイルになければなりません! Webstartを使用しているときにパスが何とか違うと思います。 - 例をありがとう、私はそれを介して動作します! – andreas

答えて

0

あなたのヒントのおかげで、私は最終的にそれを行う方法を見つけました。私のクラスのログインウインドウが静的な方法でのみ使用されているように、私は唯一の非静的な方法で動作します

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

LoginWindow.getClass()を使用する必要がありました。

ご協力いただきありがとうございます。これが他の人にも役立つことを願っております。

1

WinZipまたは7Zipでjarファイルを開き、パスが実際に/resources/img/loginWindowTop.jpgで、そのファイルがの大文字小文字の区別であるかどうかを確認します。 (特にそのファイル名はそのキャメルケースのファイルシステム上にあるはずです)少し難解なエラーはクラスローダーにありますので、window.getClass...の代わりに単にgetClass...を試すことができます。

+0

JAR内の実際のパスは "resources/img/loginWindowTop.jpg"です。しかし、これをタイプすると、ローカルでは動作しないので、最初は "/"を使用しました。フォルダ "gui/LoginWindow.class"のクラスからイメージを呼び出します。 – andreas