1

NetBeansでプロジェクトを実行していますが、.jarファイルを正常に実行できません。1。Javaクラスライブラリを使用してプロジェクトを開発していましたが、後でマニフェストファイルに問題があることがわかりました。。2.次に、上記の問題を解決するために、プロジェクトをJavaApplicationプロジェクトとして作成しました。これで、マニフェストは次のようになります。

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.6.0_22-b22 (Sun Microsystems Inc.)
Class-Path: 
Main-Class: gameloftbraker.GameLoftBraker

ターミナルでは、次の例外がスローされます。

Exception in thread "main" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(ImageIcon.java:204)
    at gameloftbraker.Ball.<init>(Ball.java:26)
    at gameloftbraker.Arena.gameInit(Arena.java:71)
    at gameloftbraker.Arena.addNotify(Arena.java:67)
    at java.awt.Container.addNotify(Container.java:2584)
    at javax.swing.JComponent.addNotify(JComponent.java:4687)
    at java.awt.Container.addNotify(Container.java:2584)
    at javax.swing.JComponent.addNotify(JComponent.java:4687)
    at java.awt.Container.addNotify(Container.java:2584)
    at javax.swing.JComponent.addNotify(JComponent.java:4687)
    at javax.swing.JRootPane.addNotify(JRootPane.java:754)
    at java.awt.Container.addNotify(Container.java:2584)
    at java.awt.Window.addNotify(Window.java:707)

よろしくお願いします。私は何も見逃していないことを願っています。コードは正常にビルドおよび実行されるため、コードに問題はありません。コードが必要な場合は、お知らせください。

Ball.java

////////////////
package gameloftbraker;

import javax.swing.ImageIcon;

public class Ball extends Graphc implements Commn {

    protected String ball = "../images/ball.png"; //address to ball graphic
    protected int xdir;      

    protected int ydir;

    public Ball(){  
        xdir =  2;
        ydir = -2;

        ImageIcon img = new ImageIcon(this.getClass().getResource(ball));
        image = img.getImage();

        height = image.getHeight(null);
        width = image.getWidth(null);

        resetState();
    }
// rest of the functions * it works perfectly as project but unable to run in .jar
}
4

2 に答える 2

1

jarファイルの外部でデータ(画像など)を使用する場合は、次を使用してください。

ImageIcon img = new ImageIcon(ball);

IDEの実行では、フォルダしかないため、機能します。jarファイルではjarファイルを残す必要がありますが、それはあなたのやり方では不可能だと思います

于 2012-06-26T15:59:27.417 に答える
1

のコードをBall示して、スタックトレースに表示されている行を強調表示していただけると助かります...しかし、ゲームのグラフィックを jar ファイルに正しくバンドルしていないと思います。

指摘すべきこと:

ビルドして正常に実行されるため、コードに問題はありません

今はうまく動いていませんよね?1 つの環境でビルドして実行しても、コードに問題がないわけではありません。たとえば、他のマシンには存在しないハードコードされたファイル名が含まれている可能性があります。ここで実際にそうであると示唆しているわけでありません。「私のマシンで動作する」ことは証明されていません。コードに問題がないこと。

編集:コードを確認できるようにball.pngなったので、jar ファイルに含まれていないようです。または、問題は..リソース名での使用です。リソース名を次のように変更してみてください。

// TODO: Make this private static final unless you have any reason not to...
protected String ball = "/images/ball.png";
于 2012-06-26T15:50:03.387 に答える