运行.jar文件时出错

时间:2013-10-17 13:05:12

标签: java jar

我创建了一个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可执行文件上。

2 个答案:

答案 0 :(得分:0)

Pokedex.png打包到顶层的jar中:

jar uf PokemonGame.jar Pokedex.png

并像这样引用它:

getClass().getResource("/Pokedex.png")

答案 1 :(得分:0)

在JAR文件中,Windows目录分隔符不存在。使用/分隔您的目录,并假设文件在那里,它将被找到。