jar wczytywanie obrazów

0

Doszukać się niestety nie mogę, bo nawet nie do końca wiem w czym leży problem.

Mam w programie komponent graficzny z tłem w pliku. To jest zwykły jpg. Obraz przechowuje jako obiekt BufferedImage (w aplikacji), a ładuję

img=ImageIO.read(new File("img/map.jpg"));

Wszystko jest pięknie dopóki nie wrzucę całości do pliku jar. Aplikacja po upakowaniu do jar niestety pliku grafiki nie widzi.

0

img = ImageIO.read(this.getClass().getResourceAsStream("img/map.jpg"));

0

niestety nie działa, błąd:

Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.IllegalArgumentException: input == null!
        at javax.imageio.ImageIO.read(Unknown Source)
        at Component.JMapPanel.<init>(JMapPanel.java:29)
        at Main.<clinit>(Main.java:41)
Could not find the main class: Main. Program will exit.

Błąd przy "zwykłym" dostępie do pliku:

javax.imageio.IIOException: Can't read input file!
        at javax.imageio.ImageIO.read(Unknown Source)
        at Component.JMapPanel.<init>(JMapPanel.java:28)
        at Main.<clinit>(Main.java:41)

Ale przynajmniej aplikacja się odpala.

0

no to odpowiem sobie sam i mam nadzieję, że pomoże to jakoś innym.

Tak więc przyczyny tego stanu są 2. map.jpg jest tłem dla komponentu znajdującego się w pakiecie Component, a więc ścieżka jest niepoprawna. Zabrakło po prostu / na początku ścieżki. Druga przyczyna jest taka, że eclipse jeśli ma włączoną opcje oddzielnych folderów dla źródła i binarek odpalając aplikację class-path ustawia na główny folder projektu. W efekcie wszystkie foldery dodatkowe trzeba przenieść do folderu /bin aby to działało poprawnie. Pewnie jest do tego jeszcze jakieś ustawienie w Eclipse, ale nie miałem czasu szukać.

Teraz przy okazji 2 informacje dodatkowe z dziedziny offtop:

  1. forum nie pozwala wyszukać frazy "jar". wyrażenie jest widać zbyt krótkie
  2. jeśli ktoś korzysta z parsera SAX może niestety zapomnieć o plikach xml w jar. dostaje się do pliku poprzez nazwę niestety. Chyba, że coś przegapiłem.
0

Bardzo podobnie działa to w Netbeans. O ile nie identycznie.

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