Dlaczego getResourceAsStream () działa w IDE, ale nie w JAR?

Chcę tylko przeczytać plik w moim programie. Plik znajduje się w jednym katalogu nad katalogiem roboczym „../f.fsh”. Tak więc poniższy kod działa poprawnie, gdy uruchomię go w środowisku IDE

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, w którym znajduje się spakowany plik f.fsh i uruchamiam go, ulega on awarii podczas tworzenia InputStreamReader, ponieważ strumień InputStream ma wartość NULL.

Przeczytałem kilka odpowiedzi na pytania dotyczące strumieni wejściowych i plików JAR, a to, co z tego wyciągnąłem, to to, że powinienem używać ścieżek względnych, ale już to robię. Z tego, co rozumiem, getResourceAsStream () może znaleźć pliki w stosunku do 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ą klasy? Pomyślałem, że chodzi tylko o dołączanie plików zewnętrznych do uruchamianego słoika.

Próbowałem również, ale nadal nie udaje mi się, gdy wprowadzam ukośnik w:

InputStream is = getClass().getResourceAsStream("\\"+name);

Spojrzałem na:Jak uzyskać ścieżkę do zasobu w pliku JAR Java i stwierdzenie, że zawartość pliku JAR nie musi być koniecznie dostępna jako plik. Spróbowałem więc skopiować plik względem słoika (jeden katalog ze słoika), a to nadal się nie udaje. W każdym razie chciałbym zostawić moje pliki w słoiku i móc je tam odczytać. Nie wiem, co się dzieje źle.

questionAnswers(2)

yourAnswerToTheQuestion