Я загружаю текстовый файл из пакета в скомпилированном JAR моего проекта Java. Соответствующая структура каталогов выглядит следующим образом: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