1

「ポン」の基本的なゲームを作成しています。削除する必要があるいくつかの不具合を除いて、ゲームを終了しました。ゲームは netbeans で完全に動作しますが、jar ファイルを作成するとエラーが発生し、動作しません。私はJavaを初めて使用しますが、画像を探しているコードに関係していると思いますが、画像はまだロードされていません。これがエラーです。これをjarファイル内のnetbeansの外で動作させるにはどうすればよいですか?

C:\Users\michael>java -jar "C:\Users\michael\Documents\NetBeansProjects\Pong\dis
t\Pong.jar"
Exception in thread "main" java.lang.NullPointerException
        at javax.swing.ImageIcon.<init>(Unknown Source)
        at pong.BallMainMenu.<init>(BallMainMenu.java:19)
        at pong.Board.gameInit(Board.java:93)
        at pong.Board.addNotify(Board.java:86)
        at java.awt.Container.addNotify(Unknown Source)
        at javax.swing.JComponent.addNotify(Unknown Source)
        at java.awt.Container.addNotify(Unknown Source)
        at javax.swing.JComponent.addNotify(Unknown Source)
        at java.awt.Container.addNotify(Unknown Source)
        at javax.swing.JComponent.addNotify(Unknown Source)
        at javax.swing.JRootPane.addNotify(Unknown Source)
        at java.awt.Container.addNotify(Unknown Source)
        at java.awt.Window.addNotify(Unknown Source)
        at java.awt.Frame.addNotify(Unknown Source)
        at java.awt.Window.show(Unknown Source)
        at java.awt.Component.show(Unknown Source)
        at java.awt.Component.setVisible(Unknown Source)
        at java.awt.Window.setVisible(Unknown Source)
        at pong.Pong.<init>(Pong.java:16)
        at pong.Pong.main(Pong.java:23)
4

2 に答える 2

2

作業ディレクトリに相対的なファイル URL を書いているのではないかと思います。これは、NetBeans 内で実行すると異なる可能性があります (コンソールから実行するときにどこから実行するかによって異なります)。

たとえば、これを netbeans プロジェクトから実行する場合、作業ディレクトリは C:\Users\michael\Documents\NetBeansProjects\Pong である可能性が高く、他の例の作業ディレクトリは単に「C:\Users\michael\」です。

パス「myimages/test.jpg」から画像をロードしているとします。netbeans から実行すると、これは "C:\Users\michael\Documents\NetBeansProjects\Pong\myimages\test.jpg" になり、他の例では "C:\Users\michael\myimages\test.jpg" になります。 .

代わりに、次を使用してリソースにアクセスしてみてください

getClass().getResource("/myimage/test.jpg");

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/ClassLoader.html#getResource(java.lang.String )

于 2012-09-25T08:35:38.597 に答える
0

Java JDK と外部ライブラリ (.jar ファイル) をシステム パス変数に追加しましたか?

Netbeans を使用しているので、 Netbeans を適切に使用して Java プロジェクトをデプロイする方法のソースを使用できます。Java のシステム パスを設定するには、このリンクを確認してください。プラットフォームによって異なる場合があります。つまり、Windows、MacOS などです。

于 2012-09-24T23:50:41.680 に答える