首先,我知道 Stack Overflow(以及任何有能力的类似论坛的网站)“先搜索,后问”的政策,并且在做功课时,我搜索了各种资源以找到解决问题的方法。话虽如此,我没有找到任何合适的答案,只好亲自问这个问题。
我有一些中等的编程技能,尤其是在 Java 语言方面。我正在使用默认的 Java SE JDK 开发这款 2D 游戏。更具体地说是JDK 7u4。在这个项目中,我们有一个管理大多数 I/O 操作的类。它的一种方法返回文件的路径:
public static URL load(String resource) {
return ZM.class.getResource(resource);
}
现在,在 Netbeans(7.1 版)上运行项目时,此方法可以正常工作。但是,在构建和清理项目时,生成的 .jar 文件似乎与其创建者不一致。在命令行上运行 .jar 时,JVM 捕获了一个 .jar NullPointerException
。似乎无法在 .jar 中读取该文件。按照我的程序员直觉,我开始调试项目。我的第一次尝试是检查该load
方法是否是有问题的成员。我进行了一些测试并获得了一些有趣的结果:
在 Netbeans 上运行应用程序并使用“ZM.class”作为方法参数时,它返回:
/D:/Projects/GeometryZombiesMayhem/build/classes/geometryzombiesmayhem/ZM.class
但是从 .jar 文件运行它时,它返回:
file:/D:/Projects/GeometryZombiesMayhem/dist/GeometryZombiesMayhem.jar!/geometryzombiesmayhem/ZM.class
自然,我尝试从中删除初始file:
字符串。没有效果。然后我尝试从[...].jar![...]
. 再次,什么都没有。我尝试从路径中删除所有可能的排列。没运气。
针对自己的 .jar 文件测试该方法工作正常。现在,当我尝试访问文件的内部时,它不允许我访问。在这个项目的早期版本中,它工作得很好。我不确定发生了什么。欢迎任何帮助。
提前谢谢你,雷纳托