JAR System nie może odnaleźć określonej ścieżki

0

Program świetnie działa jeśli go skompiluje i uruchomię z eclipsea, jednak wyeksportowany do jara wyrzuca w pewnym momencie wyjątek.
Daję screena jak wygląda wyjątek i zaznaczony kod, który rzuca wyjątkiem:

100741154750d39bc09c626.png

Jak widać nawet WinRar pokazuje że ten plik tam jest. Co ciekawsze kiedy usunę w jarze(WinRarem) ten plik to otrzymuję NullPointerEx..., kiedy natomiast jest plik na swoim miejscu sami widzicie. Na screenie widać też, że podobnie pobieram ImageIcon (i to z folderu obok) i działa wszystko ok.

Wrzucę też kod, gdzie wywołuję tą metodę, by udowodnić że jako Stringa też niczego dziwnego nie podaję:

JasperDesign jasperDesign = new Loader().loadIReportDesign("reports/Works.jrxml");
1

Tutaj jest opisany identyczny problem:
http://stackoverflow.com/questions/7893274/getting-a-file-from-current-package

Wygląda na to, że zadziała, jeśli zamienisz getResource() na getResourceAsStream()

0

Dziękuję za szybką pomoc. Mimo iż googlowałem nie znalazłem odpowiedzi, widocznie po dzisiejszych 9 godzinach programowania już nawet z google porządnie skorzystać nie potrafię.

Co do samego problemu nie rozumiem go zbytnio i dziwi mnie czemu zadziałało z innymi plikami a nie z tym.

0

Podajesz do konstruktora FileInputStream nazwę pliku, on szuka w systemie plików, nie w Jarce; nie znajduje i jest exception (natomiast sama metoda getResource() poprawnie znajduje plik - dlatego pojawia się ten NullPointerEx w momencie, kiedy usuniesz plik z jara). Najwidoczniej ImageIcon działa inaczej i przeszukuje także jar na podstawie urla, który mu dasz w konstruktorze.

1 użytkowników online, w tym zalogowanych: 0, gości: 1