0

Java ゲームの .jar ファイルを作成しました。このプログラムは Java コンパイラで問題なく動作しましたが、.jar ファイルを実行しようとすると、結果が表示されませんでした。次を使用して、CMD経由で再度実行しました。

java -jar PokemonGame.jar`

...エラーが発生しました:

Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.(init)(ImageIcon.java:167)
at MainFile.(init)(MainFile.java:25)
at MainFile.main(MainFile.java:86)

コメントした行番号をたどった:

public class MainFile extends JPanel implements MouseListener{
    MainFile m;
    static JFrame mainWindow = new JFrame("POKEMON MEMORY GAME");
    static TimerFile timerPanel;
    static GridFile gridPanel;
    static LogsFile logsPanel;
    static ButtonMenuFile buttonMenuPanel;
    JPanel blockPanel;
    URL url;
    BufferedImage winlose;
    JPanel winlosePanel;
    //MainFile line 25
    ImageIcon gameBackground = new ImageIcon(getClass().getResource("Assets\\Pokedex.png"));
    Image gameImage = gameBackground.getImage();
    GameSoundFile gameSound = new GameSoundFile();
    GameSoundFile screenSound = new GameSoundFile();

    //...some codes here

    public static void main(String[] args) {    
        //MainFile line 86
        MainFile mainPanel = new MainFile();
        mainPanel.setMainPanel(mainPanel);          

        mainWindow.add(mainPanel);
        mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        mainWindow.pack();
        mainWindow.setLocationRelativeTo(null);
        mainWindow.setResizable(false);
        mainWindow.setVisible(true);

    }

    public MainFile(){
        //...MainFile codes here
    }
}

このプログラムが Java コンパイラで実行できたのに .jar execuatble ファイルでは実行できなかったのは奇妙な動作のように思われるため、誰でもこの欠陥を教えてもらえますか。

4

2 に答える 2

0

Pokedex.png最上位レベルで jar にパックします。

jar uf PokemonGame.jar Pokedex.png

そしてそれを次のように参照します:

getClass().getResource("/Pokedex.png")
于 2013-10-17T13:11:29.400 に答える
0

JAR ファイル内では、Windows ディレクトリ区切り文字は存在しません。ディレクトリを区切るために使用/します。ファイルがそこにあると仮定すると、ファイルが見つかります。

于 2013-10-17T13:13:31.623 に答える