Java projemin derlenmiş bir JAR'ında bir paketin içinden bir metin dosyası yüklüyorum. İlgili dizin yapısı aşağıdaki gibidir:
/src/initialization/Lifepaths.txt
Kodum Class::getResourceAsStream
geri dönmek için çağırarak bir dosya yükler 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
Ne kullandığım önemli değil, çıktılar her zaman yazdırılır . Yukarıdakilerin neden işe yaramadığından emin değilim, bu yüzden de denedim:
"/src/initialization/Lifepaths.txt"
"initialization/Lifepaths.txt"
"Lifepaths.txt"
Bunların hiçbiri işe yaramıyor. Ben ettik okumak sayısız sorular bugüne kadar konuyla ilgili, ancak bunların hiçbiri yararlı olmuştur - genellikle, sadece zaten yapıyorum Kök yolunu kullanarak yük dosyalarına derler. Bu, ya da sadece filename
denedim geçerli dizinden (sadece yük ) dosyayı yükleyin . Dosya, JAR'da uygun adda ve uygun adla derleniyor.
Bunu nasıl çözerim?
Lifepaths.class
. Olduğu söyleniyor, neden getClassLoader()
çalışmasına izin veriyor? (Ayrıca, bir cevap göndermek için çekinmeyin!)
Lifepaths.getClass()
?
getResource(String)
. BTW - Bunlardan herhangi birinin bir static
bağlamda çalışmasını sağlamakta her zaman sorun yaşadım . Sorun temel olarak elde edilen sınıf yükleyicinin J2SE sınıflarına yönelik olmasıdır. Uygulamanın kendisi için tasarlanan bağlam sınıfı yükleyiciye erişmeniz gerekir .