Saya memuat file teks dari dalam sebuah paket di JAR yang dikompilasi dari proyek Java saya. Struktur direktori yang relevan adalah sebagai berikut:
/src/initialization/Lifepaths.txt
Kode saya memuat file dengan menelepon Class::getResourceAsStream
untuk mengembalikan a 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();}
}
Hasil cetak akan selalu dicetak null
, apa pun yang saya gunakan. Saya tidak yakin mengapa hal di atas tidak berhasil, jadi saya juga sudah mencoba:
"/src/initialization/Lifepaths.txt"
"initialization/Lifepaths.txt"
"Lifepaths.txt"
Tak satu pun dari ini bekerja. Saya telah membaca banyak pertanyaan sejauh ini tentang topik ini, tetapi tidak ada satupun yang membantu - biasanya, mereka hanya mengatakan untuk memuat file menggunakan path root, yang sudah saya lakukan. Itu, atau hanya memuat file dari direktori saat ini (hanya memuat filename
), yang saya juga coba. File sedang dikompilasi ke dalam JAR di lokasi yang sesuai dengan nama yang sesuai.
Bagaimana saya mengatasi ini?
Lifepaths.class
. Yang sedang berkata, mengapa itu getClassLoader()
memungkinkan untuk bekerja? (Juga, jangan ragu untuk mengirim jawaban!)
Lifepaths.getClass()
? Tidak ada metode statis yang didefinisikan dalam Object ...
getResource(String)
. BTW - Saya selalu memiliki masalah dalam membuat salah satu dari mereka bekerja dalam static
konteks. Masalahnya pada dasarnya bahwa kelas loader yang diperoleh adalah yang dimaksudkan untuk kelas J2SE. Anda perlu mendapatkan akses ke pemuat kelas konteks yang ditujukan untuk aplikasi itu sendiri.