Ładuję plik tekstowy z pakietu w skompilowanym pliku JAR mojego projektu Java. Odpowiednia struktura katalogów jest następująca:
/src/initialization/Lifepaths.txt
Mój kod ładuje plik, wywołując Class::getResourceAsStreama 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();}
}
Wydruk zawsze będzie drukowany null, bez względu na to, z czego korzystam. Nie jestem pewien, dlaczego powyższe nie działa, więc próbowałem też:
"/src/initialization/Lifepaths.txt""initialization/Lifepaths.txt""Lifepaths.txt"
Żadna z tych prac. Do tej pory przeczytałem wiele pytań na ten temat, ale żadne z nich nie było pomocne - zwykle mówią tylko, aby ładować pliki przy użyciu ścieżki katalogu głównego, co już robię. To lub po prostu załaduj plik z bieżącego katalogu (po prostu załaduj filename), co również próbowałem. Plik jest kompilowany do pliku JAR w odpowiednim miejscu o odpowiedniej nazwie.
Jak to rozwiązać?
Lifepaths.class. Biorąc to pod uwagę, dlaczego getClassLoader()pozwala to działać? (Napisz też odpowiedź!)
Lifepaths.getClass()? Nie ma takiej statycznej metody zdefiniowanej w Object ...
getResource(String). BTW - Zawsze miałem problemy z nakłonieniem któregokolwiek z nich do pracy w statickontekście. Problem polega na tym, że uzyskany moduł ładujący jest przeznaczony dla klas J2SE. Musisz uzyskać dostęp do modułu ładującego klasy kontekstu, który jest przeznaczony dla samej aplikacji.
.