Działa poprawnie, lecz gdy przerobie na jara gubi bitmapy

0

Witam. Mam następujący problem. Zrobiłem program. Kompiluje się bez błędów, chodzi tak jak powinien czyli wszystko jest OK. Można go przerobić na jara. Robie to w następujący sposób:

Mój program znajduje się w Katalogu "c:\Projekt\Gra"

tam mam wszystkie pliki źródłowe oraz już te po kompilacji. Mam tam także jeden plik graficzny "tlo.jpg", który jest wykorzystywany do ładowania tła w grze.

Zaznaczam że bez zamieniania na jara chodzi wszystko jak powinno.
Moją klasą główną jest Test.class

tworze plik "manifest", który tak jest wypełniony w katalogu "c:\Projekt":

Manifest-Version: 1.2
Main-Class: Gra.Test
Created-By: 1.4 (Sun Microsystems Inc.)

w katalogu "c:\Projekt" są takze pliki ".classpath" i ".project", które tworzy eclipse

będąc w katalogu "c:\Projekt" wykonuje takie polecenie:

jar -cvfm0 projekt.jar manifest Gra*.class Gra\tlo.jpg

Odpalam otrzymany plik jar poleceniem

javaw -jar projekt.jar

I działa poprawnie wszystko. Kiedy przeniose sam plik jar do innego katalogu gdzie nie ma już katalogu i po odpaleniu program nie wyswietla tła. I tu jest cały problem.
Szukałem i nie mogłem znaleźć pomocy na ten temat.

Grafike w grze ładuje w taki sposób:

Image bgImage;
bgImage = new ImageIcon("Gra/tlo.jpg").getImage();

Program działa dobrze natomiast gdy przekopiuje go do katalogu gdzie ma widoczność na katalog "Gra\tlo.jpg"

Rozumiem że problem tkwi chyba w metodzie ładującej grafike w programie, ponieważ nie potrafi ona ze swojego jara jej odczytać. Sprawdziłem w jarze wszystkie potrzebne pliki są nawet tlo.jpg tylko jak zrobić by klasa, która jest w tym jarze odzyskała widoczność pliku tlo.jpg. Jeśli ktoś pomoże to chwała mu za to. Z góry dziękuje. Pozdrawiam

0

Odpowiedz:

URL url = Test.class.getResource("Gra/tlo.jpg");
Image img = new ImageIcon(url);

Powyzszy kod oznacza: szukaj pliku tlo.jpg tam gdzie znajduje sie klasa Test.
Powinno dzialac.

0

Bardzo Ci dziękuje. Twój kod działa. Próbowałem robić tak wcześniej ale nie zauwazyłem jednej małej rzeczy, że ImageIcon ma taki konstruktor z parametrem typu URL. Szczerze ci dziękuje. Cały dzięń z tym walczyłem.

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