2012-01-15 19 views
11

Mam prosty program, który musi wyświetlać obrazy. Wiem, jak to zrobić, uruchamiając kod z Eclipse i wiem, jak to zrobić z pliku JAR, ale chciałbym rozwiązanie, które działa w obu przypadkach.Ładowanie ImageIcon z JAR lub systemu plików

projekt Eclipse jest jako takie:

- Project (java) 
    - src 
    - controller 
     - Main.java 
    - ui 
     - Display.java 
    - images 
    - image.jpg 

fragment kodu, który działa od wewnątrz Eclipse:

ImageIcon image = new ImageIcon("images/image.jpg); 

Ten, który pracuje dla JAR (wszystko w jednym pliku JAR):

java.net.URL imgURL = getClass().getResource("/images/image.jpg"); 
ImageIcon image = new ImageIcon(imgURL); 

Co powinienem zmienić, aby uzyskać pojedynczy kod, który działa zarówno w sytuacji ons?

+0

Czy próbowałeś już drugiej próby w obu sytuacjach? to może po prostu odpowiedzieć na twoje własne pytanie (i zaoszczędzić czas oczekiwania na odpowiedzi tutaj)! –

+2

Witaj? Czy ten mikrofon jest włączony? –

+0

@ Poduszkowiec pełen węgorzy. Tak, oczywiście próbowałem obu fragmentów kodu w obu przypadkach. – Martijn

Odpowiedz

9

Umieść folder images wewnątrz folderu src i Eclipse kopiowania obrazów do folderu docelowego (bin lub classes ogólnie), który pozwoli im dostępne w ścieżce klasy, tak jakby były one w słoiku w wydana wersja Twojej aplikacji.

getResource() nie wygląda w słoiku. Wygląda w ścieżce klas programu ładującego klasy. To, czy obraz jest w słoiku, czy nie, nie jest zatem ważne. Musi być w ścieżce klas. I oczywiście docelowy folder eclipse (bin lub classes, ogólnie) znajduje się w ścieżce klas aplikacji podczas uruchamiania z Eclipse.

+0

Dziękuję bardzo! Przeniesienie folderu 'images' wewnątrz' src' było rzeczywiście rozwiązaniem. Mój drugi fragment kodu działał w niezmienionej postaci zarówno w środowisku Eclipse, jak i po uruchomieniu z słoika. – Martijn

Powiązane problemy