我從我的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