我正在开发一个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”),但是我得到了同样的错误
答案 0 :(得分:0)
您正在尝试访问不在jar文件中的文件。如果您在jar中包含resources文件夹。换句话说,将它放在它应该工作的同一目录中。
实施例。如果jar在桌面上,则资源文件也必须在桌面上
答案 1 :(得分:0)
如果Jar文件中的"Resources/SpriteSheets"
目录
this.getClass()。getClassLoader()。getResource()方法
ClassLoader.getSystemResource
如果jar文件外的"Resources/SpriteSheets"
目录
System.getProperty( “user.dir来”)
获取根目录(可执行jar目录),然后就可以做你想要的了。
PS:你应该检查Buffer.listFiles()== null