我从我的Java项目的已编译JAR中的包中加载文本文件。相关的目录结构如下:正在使用getResourceAsStream返回null
/src/initialization/Lifepaths.txt
的代码加载该文件是:
public class Lifepaths {
public static void execute() {
System.out.println(Lifepaths.class.getClass().
getResourceAsStream("/initialization/Lifepaths.txt"));
}
private Lifepaths() {}
//This is temporary; will eventually be called from outside
public static void main(String[] args) {execute();}
}
打印出来总是会打印null
,不管我用什么。我不知道为什么上面是行不通的,所以我也试着:
"/src/initialization/Lifepaths.txt"
"initialization/Lifepaths.txt"
"Lifepaths.txt"
无论这些工作。 I'vereadnumerousquestions到目前为止的话题,但他们都没有帮助 - 通常,他们只是说使用根路径加载文件,我已经在做。那个,或者只是从当前目录加载文件(只是加载filename
),我也试过了。正在使用适当的名称将文件编译到适当位置的JAR中。
我该如何解决这个问题?
你是否检查过它真的*是*在jar文件中?你有没有检查文件夹? –
@JonSkeet它确实被编译到适当位置的JAR文件中,并且情况正确。 – Zyerah
@greedybuddha虽然我无法从静态上下文中调用它,但我可以使用'Lifepaths.class'调用它。这就是说,为什么'getClassLoader()'允许它工作? (另外,请随时发布答案!) – Zyerah