我一直在研究他们在wiki教程部分提供的Asteroids Game示例代码,但我遇到了一个奇怪的错误。
代码在我的开发环境Eclipse中运行得很好。游戏正常运行并正常退出。
我在文件菜单中浏览导出过程并创建一个可执行jar,当使用此批处理文件代码运行时
java -Djava.library.path=D:\Tools\lwjgl-2.8.4\lwjgl-2.8.4\native\windows -jar SpaceInvaders.jar
启动显示并在尝试加载wav文件时失败。给出这个错误。
Exception in thread "main" java.lang.NullPointerException
我追溯到代码中发生的位置,它位于加载wavs的位置。显然在环境之外它无法找到文件,即使它们就在代码旁边?我所有的wav文件和gif文件现在都与java类文件在同一个目录中,所以从代码中调用它们看起来像这样:
在Google上搜索内容时,它会告诉我将它们压缩成单独的文件,然后从那里导入到类文件夹和引用。我想知道是否有办法将文件保存在我的主jar文件中,而不是必须创建一个单独的实体。
感谢您的回复!如果需要更多信息,请告诉我。
答案 0 :(得分:1)
您可能需要考虑使用更高级别的API,例如the 3d soundsystem from paulscode。 SoundSystem可以从jar内部读取(就像你要求的那样),如果当前硬件不支持LWJGL声音,它会自动切换到java声音。