Eclipse导出为可执行jar的NullPointerException

时间:2013-04-08 12:12:54

标签: java eclipse classloader

我的项目在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.txtlevels/,因此../001.txt应该有效。

这就是.jar

中的清单
Manifest-Version: 1.0
Class-Path: .
Main-Class: game.Game

这是一个非常烦人的问题,谷歌搜索几个小时没有提供任何解决方案,我之前遇到过类似的问题但实际上是加载相对路径而不是NPE。

1 个答案:

答案 0 :(得分:1)

getResource()从类路径加载资源,而不是从文件系统路径加载资源。因此,如果001.txt在包级别中,则应该输入:

filename =“/ level / 001.txt”;

前导“/”表示绝对路径。如果你输入“../001.txt”这是一个相对的类路径,并在/ levels / game /../ 001.txt中进行转换