Я завантажую текстовий файл із пакету в складений 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)
. BTW - У мене завжди були проблеми з тим, щоб працювати з будь-яким із них у static
контексті. Проблема полягає в тому, що отриманий завантажувач класів - це той, який призначений для класів J2SE. Вам потрібно отримати доступ до завантажувача контекстного класу, який призначений для самої програми.