Nie wyświetla grafiki pobranej z *.jar

0

Witam!

Właśnie napotkałem na ciekawe zjawisko. Mam grafikę upakowaną do jara w którym siedzi moja aplikacja. Pod win 7 wszystko ładnie działało, pod XP jednak obrazki przestały mi się wyświetlać (nie, nic nie pluło nulami). Przyczyną takiego stanu, był znak "!" w ścieżce do katalogu w którym leżał program. Dlaczego tak się dzieje? Jak poradzić sobie z tego typu przypadkami (jak dodać obsługę takich znaków specjalnych w ścieżkach?)
Dodam jeszcze, że sam jar w obu przypadkach posiada w nazwie wykrzyknik, ale to nie ma żadnego wpływu na wczytywanie grafik.

Nadmienię, że obrazki zasysam w ten sposób:

URL link=ImageLoader.class.getResource("/util/internalImages/"+image);
ImageIcon icon=new ImageIcon(link);
0

Znak ! jest interpretowany mniej więcej w ten sposób "Jeżeli nazwa pliku zawiera ! to jest to archiwum jar".
Masz błąd w ścieżce:

public class ImgLoader {

	public static void main(String[] args){
		System.out.println(ImgLoader.class.getResource("./ImgLoader.class"));
		System.out.println(ImgLoader.class.getResource("/ImgLoader.class"));
	}
	
}

do przeanalizowania.

0
Koziołek napisał(a)

Znak ! jest interpretowany mniej więcej w ten sposób "Jeżeli nazwa pliku zawiera ! to jest to archiwum jar".
Masz błąd w ścieżce:

public class ImgLoader {

	public static void main(String[] args){
		System.out.println(ImgLoader.class.getResource("./ImgLoader.class"));
		System.out.println(ImgLoader.class.getResource("/ImgLoader.class"));
	}
	
}

do przeanalizowania.

czekaj czekaj, bo nie rozumiem. Mógłbyś trochę jaśniej? Ok czy ta kropka w ścieżce tak dużo zmienia? (obecnie ścieżka jest bez kropki). Jest to trochę głupi błąd, jak że na moim win 7x64 jest ok oraz na wirtualce Xpx86 tej wyswietla mi te grafiki. Dodam też, że używam wrappera do exe i nazwa pliku exe posiada też znak !( jednak tak jak mówie, błąd znika z nazwy KATALOGU w którym program się znajduje usunę !)

0

Po kolei. Zapis ./ oznacza w bieżącym katalogu. Zapis / oznacza w katalogu głównym (pod win główny katalog to bieżący dysk).

Jeżeli ! jest w nazwie pliku (ostatni element w ścieżce) to jest ignorowane. Jeżeli jest w nazwie katalogu to katalog jest traktowany jako plik zip.

//edit: wiem, że to może być dziwne, ale Windows nie jest w pełni zgodny ze standardem POSIX, a Java stara się zachować tą zgodność.

0

Wniosek:
Musze się obejść bez ! w katalogu .... ;/ Dzięki za wyjaśnienia :)

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