2012-01-22 21 views
7

Kiedy eksportuję mój kod jako działający plik JAR z zaćmienia, wszystkie pliki, które ustawiłem, aby przechwytywać, takie jak obrazy przycisków i inne pliki, są niedostępne, mimo że faktycznie znajdują się w pliku JAR. . Dodałem getClass().getResource przed plikami, ale kiedy próbuję uruchomić JAR nic się nie dzieje, jakieś sugestie?Brakujące pliki JAR Brakujące obrazy/pliki (zasoby)

+2

Pokaż nam prawdziwy kod, a także listę zawartości pliku JAR zawierającego ścieżki. – ziesemer

Odpowiedz

21

Wygląda na to, że nie umieszczasz swoich rzeczy we właściwym znaczeniu. W celu uczynienia go pracy, wykonaj następujące kroki:

  1. prawym przyciskiem myszy Project w Project Explorer Tree.
  2. Przejdź do New -> Source Folder, a następnie podaj Name do Source Folder.
  3. Teraz ręcznie dodaj swoje rzeczy do tego Source Folder, tak utworzonego przez ciebie, na przykład, jeśli chcesz dodać obrazy, następnie wykonaj New Folder, ręcznie odwiedzając ten Source Folder do File System.
  4. Nazwij to New Folder jako images i skopiuj zdjęcia do tego Folder.
  5. Teraz wróć do swojego Eclipse IDE i Refresh swojego Project z Project Explorer, klikając prawym przyciskiem myszy na swój projekt, tutaj możesz zobaczyć swoją dodaną zawartość po odświeżeniu.

Teraz, aby uzyskać dostęp, powiedz dowolny obraz, użyjesz.

getClass().getResource("/images/yourImageName.extension"); 

która zwróci jeden obiekt URL. Pamiętaj w tym przypadku o numerze first forward slash, ponieważ dostęp do zawartości folderu źródłowego jest uzyskiwany za pomocą tego prostszego kodu. Teraz, gdy uruchomisz swój projekt, zawartość tego Folderu Źródłowego zostanie automatycznie dodana do folderu bin, a kiedy utworzysz Runnable Jar, dostęp do zawartości wewnątrz twojego Folderu Źródłowego będzie możliwy bez zmian.

1

Ścieżka musi być odpowiednia dla zasobu.

Dla "foo.gif" znajdującego się w katalogu głównym słoika należy odwoływać się do niego za pomocą "/foo.gif".

Jeśli program działa poprawnie po całkowitym wyczyszczeniu i odbudowaniu, ale kończy się niepowodzeniem jako słoik, najprawdopodobniej nie ma plików zawartych w słoiku.

0

Spróbuj umieścić foldery w słoiku w taki sam sposób, jak w programie. Umieść te same zasoby w tych samych miejscach, w których masz je w projekcie. Słoik odwoła się do nich w taki sam sposób, jak w twoim kompilatorze.

0

Musisz uzyskać obrazy przy użyciu strumienia w ten sposób - this.class.getClassLoader(). GetResourceAsStream ("test.jpg") i upewnij się, że obrazy są obecne w słoiku, do którego się odwołujesz.

0

Jak powiedział nIcE cOw, wystarczy utworzyć folder źródłowy w drzewie eksploratora projektu. Wszystkie pliki znajdujące się w tym folderze znajdują się w głównym folderze projektu.

Aby odnieść się do nich, należy napisać imię i nazwisko projekty slash nazwę jak plik:

getClass().getResource("ProjectName/image.extension");

Mam nadzieję, że to pomoże!

Powiązane problemy