我的项目在eclipse中运行得很好但是导出为可执行jar会导致一堆问题。 .jar不可执行,双击不执行任何操作。在cmd中的.jar上运行java -jar会产生大量的NPE,显然从.jar运行时的扫描程序为null。 getResource返回null,我不知道为什么。
Scanner in = null;
try {
in = new Scanner(new FileReader(getClass().getResource(filename)
.getFile()));
readLine(in);
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
filename = "../001.txt"
运行扫描程序的类位于game/
。文件001.txt
为levels/
,因此../001.txt
应该有效。
这就是.jar
中的清单Manifest-Version: 1.0
Class-Path: .
Main-Class: game.Game
这是一个非常烦人的问题,谷歌搜索几个小时没有提供任何解决方案,我之前遇到过类似的问题但实际上是加载相对路径而不是NPE。
答案 0 :(得分:1)
getResource()从类路径加载资源,而不是从文件系统路径加载资源。因此,如果001.txt在包级别中,则应该输入:
filename =“/ level / 001.txt”;
前导“/”表示绝对路径。如果你输入“../001.txt”这是一个相对的类路径,并在/ levels / game /../ 001.txt中进行转换