Java程序在eclipse中运行但在jar中出错

时间:2013-07-27 22:34:36

标签: java eclipse jar nullpointerexception embedded-resource

我正在开发一个Java游戏,它在Eclipse中按预期运行但是当我将它作为可执行jar导出时,当我尝试调用File类的listFiles()方法时,我得到一个空指针异常。这是代码:

File Buffer = new File( "Resources/SpriteSheets" );

// Count how many sprite sheets there are
m_intTotalSheetCount = Buffer.listFiles( ).length;

这是错误:

C:\Users\Joe>java -jar C:\Users\Joe\Documents\GameDevelopment\Game1.jar
Exception in thread "Thread-2" java.lang.NullPointerException
        at Graphics.CSpriteSheetLoader.<init>(CSpriteSheetLoader.java:25)
        at Graphics.CScreen.<init>(CScreen.java:36)
        at game.CGame.Initialize(CGame.java:107)
        at game.CGame.run(CGame.java:157)
        at java.lang.Thread.run(Thread.java:722)

我查看了jar文件,那里甚至没有资源文件夹,所以我也尝试了File(“SpriteSheets”),但是我得到了同样的错误

2 个答案:

答案 0 :(得分:0)

您正在尝试访问不在jar文件中的文件。如果您在jar中包含resources文件夹。换句话说,将它放在它应该工作的同一目录中。

实施例。如果jar在桌面上,则资源文件也必须在桌面上

答案 1 :(得分:0)

  1. 如果Jar文件中的"Resources/SpriteSheets"目录

    this.getClass()。getClassLoader()。getResource()方法

    ClassLoader.getSystemResource

  2. 如果jar文件外的"Resources/SpriteSheets"目录

    System.getProperty( “user.dir来”)

  3. 获取根目录(可执行jar目录),然后就可以做你想要的了。

    PS:你应该检查Buffer.listFiles()== null