Я загружаю текстовый файл из пакета в скомпилированный JAR-файл моего Java-проекта. Соответствующая структура каталогов выглядит следующим образом:
/src/initialization/Lifepaths.txt
Мой код загружает файл, вызывая, Class::getResourceAsStream
чтобы вернуть InputStream
.
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"
Ни одна из этих работ. Я уже прочитал множество вопросов по этой теме, но ни один из них не помог - обычно они просто говорят, чтобы загружать файлы, используя корневой путь, что я уже делаю. Это или просто загрузить файл из текущей директории (просто загрузить filename
), что я тоже пробовал. Файл компилируется в JAR в соответствующем месте с соответствующим именем.
Как мне это решить?
Lifepaths.class
. При этом, почему это getClassLoader()
позволяет работать? (Кроме того, не стесняйтесь
Lifepaths.getClass()
? Нет такого статического метода, определенного в Object ...
getResource(String)
. Кстати, у меня всегда были проблемы с тем, чтобы заставить кого-то из них работать в static
контексте. Проблема в основном в том, что получаемый загрузчик классов предназначен для классов J2SE. Вам необходимо получить доступ к загрузчику классов контекста, который предназначен для самого приложения.