W Eclipse działa, po skompilowaniu nie ma plików graficznych w /bin

0

Po skompilowaniu programu, nie widzi on plików, które wcześniej znajdowały się w katalogu /bin. Wyskakuje błąd:

“Can't read input file!”

wskazujący na:

File imageFile = new File("bin/logo.gif");

Po zbudowaniu programu do .jar, nie ma tam katalogu /bin. Gdy ręcznie dodaję tam ten folder i wrzucam pliki graficzne, nie ma poprawy.

Co robię źle?

0

A może napisz jak spakowałeś o jara?
Wrzuciłeś ręcznie do jara? W sensie otworzyłeś np. win rarem i wrzuciłeś?

ten folder /bin jest w środku projektu?

0

Całość skompilowałem Eclipsem, który stworzył .jar. Wewnątrz nie było katalogu /bin, którego ścieżka, to:
C:\Users...\workspace\ArkanoidInvaders\bin
Wewnątrz katalogu /bin znajdują się klasy programu oraz pliki graficzne. Odniesienie do niech wewnątrz kodu w przypadku setSpriteName jest bezpośrednie, tj.:

setSpriteName("gracz.gif");

Natomiast w przypadku tym, który powoduje błąd (ale i jest ten kod wykonywany przed spritami, także nie wiadomo co z nimi będzie, jeśli uda się naprawić logo.gif) mam imageFile, jak w poprzednim poście odwołanie do /bin/logo.gif, bo imageFile szuka plików w katalogu głównym aplikacji.

.jar otwierałem 7zipem, wrzucałem tam katalog /bin i pliki.

Próbowałem też wrzucać plik logo.gif do katalogu głównego, oczywiście zmieniając ścieżkę dostępu w kodzie, zmieniając "bin/logo.gif" na "logo.gif". Nie pomogło.

2

Pliki graficzne z jara czyta się metodą getResource, np.

new ImageIcon(NazwaKlasy.class.getResource("resources/Play.gif"));

W Eclipsie też można tak czytać.

0

@bogdans Twoja porada uświadomiła mi, że pliki graficzne powinienem umieścić w katalogu /images, który powinien znajdować się w tym samym katalogu, co plik jar. Dzięki temu aplikacja sie uruchomiła, a obrazek był widoczny. Moja aplikacja wyświetla menu główne z obrazkiem, który udało się w końcu pokazać, jednak po wciśnięciu przycisku powinno otworzyć sie okno z grą, w której są sprity. Okno jednak się nie otwiera.
Po uruchomieniu aplikacji z konsoli przez "java -jar ścieżkadoplikujar" , wyskakuje ten sam błąd co wcześniej i aplikacja się nie uruchamia. Przez dwuklik na jarze otwiera się tylko menu z obrazkiem.

1

Dziwi Cię to? Ścieżka postaci images/Play.gif, to ścieżka względna - droga od katalogu bieżącego do pliku graficznego. Podczas dwukliku na pliku jar katalogiem bieżącym jest katalog zawierający plik jar, takie uruchamianie java -jar ścieżkadoplikujar z konsoli sugeruje, że katalogiem bieżącym jest inny katalog.

0

Teraz już nie dziwi. Teraz najpierw przeniosłem się przez cd do katalogu z plikiem jar, potem dopiero go uruchomiłem. Odczytałem błędy z konsoli, poprawiłem co trzeba (setSpriteName odnosi się do plików znajdujących się w .jar, więc je tam wrzuciłem. Dziękuję za pomoc!

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