Po prostu chcę odczytać plik do mojego programu. Plik znajduje się w jednym katalogu nad katalogiem roboczym na "../f.fsh". Więc następujący kod działa poprawnie, gdy uruchomię go w IDEDlaczego funkcja getResourceAsStream() działa w środowisku IDE, ale nie JAR?
String name="../f.fsh";
InputStream is = getClass().getResourceAsStream(name);
InputStreamReader isreader=new InputStreamReader(is);//CRASHES HERE WITH NULL POINTER EXCEPTION
BufferedReader br = new BufferedReader(isreader);
ale gdy tworzę plik JAR który f.fsh spakowane w jej wnętrzu i uruchomić go, to wywala podczas tworzenia InputStreamReader, ponieważ InputStream ma wartość null.
Przeczytałem kilka odpowiedzi na pytania dotyczące strumieni wejściowych i plików JAR, a to, co otrzymałem, to to, że powinienem używać względnych ścieżek, ale już to robię. Z tego co rozumiem, getResourceAsStream() może znaleźć pliki względem katalogu głównego projektu, tego właśnie chcę. Dlaczego nie działa w JAR? Co jest nie tak, jak mogę to naprawić?
Czy ma to związek ze ścieżką klas? Myślałem, że to tylko w przypadku dołączania plików zewnętrznych do uruchamianego słoika.
Próbowałem również, ale nie, gdy oddanie ukośnik w:
InputStream is = getClass().getResourceAsStream("\\"+name);
spojrzałem na: How to get a path to a resource in a Java JAR file andfound że zawartość słoika nie może necesarily być dostepne w postaci pliku. Tak więc spróbowałem go, kopiując plik w stosunku do słoika (jeden katalog z słoika), a to wciąż kończy się niepowodzeniem. W każdym razie chciałbym zostawić moje pliki w słoiku i móc je tam przeczytać. Nie wiem, co jest nie tak.
Dzięki, to ma sens. Zmieniłem lokalizację plików i miejsce, w którym znajdują się moje zasoby, i udało mi się ominąć ten błąd w słoiku. Nigdy bym nie pomyślał, że Eclipse ma błąd na moją korzyść. Dziękuję bardzo! – AAB