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

jar ファイル内にないファイルにアクセスしようとしています。jar に resources フォルダーを含める場合。つまり、動作するはずの同じディレクトリ内に配置します。

元。jar がデスクトップにある場合、リソース ファイルもデスクトップにある必要があります。

于 2013-07-27T23:14:26.233 に答える
0
  1. If the "Resources/SpriteSheets" directory inside Jar file

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

    ClassLoader.getSystemResource

  2. If the "Resources/SpriteSheets" directory outside the jar file

    System.getProperty("user.dir")

to get the root directory(the executable jar dir),then you can do what you want.

PS:you should check Buffer.listFiles( ) == null

于 2013-07-28T02:51:16.260 に答える