0

我正在用 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"),但我得到了同样的错误

4

2 回答 2

0
  1. 如果"Resources/SpriteSheets"Jar文件里面的目录

    this.getClass().getClassLoader().getResource()

    ClassLoader.getSystemResource

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

    System.getProperty("user.dir")

获取根目录(可执行jar目录),然后你可以做你想做的事。

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

于 2013-07-28T02:51:16.260 回答
0

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

前任。如果 jar 在桌面上,则资源文件也必须在桌面上

于 2013-07-27T23:14:26.233 回答