Intellij - utworzenie pliku jar z obrazkami

Intellij - utworzenie pliku jar z obrazkami
0

Napisałam aplikację w swingu, w której chcę wyświetlać ikony na przyciskach. Mam mały problem z utworzeniem pliku jar, który używa dodatkowych plików.
Oznaczyłam folder resources jako resources root. Pliki otwieram w ten sposób:

Kopiuj
        FileInputStream fis = new FileInputStream((this.getClass().getResource("/add.png")).getFile());
        Image add = ImageIO.read(fis);
        dodajButton.setIcon(new ImageIcon(add));

Używam intellij idea.
I nie wiem jak to rozwiązać, siedzę nad tym już trochę, ale niestety bezskutecznie.

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

Pytasz jak to zbudować odpowiednio? Jeśli to maven to nie kombinuj tylko zrób katalog java/src/resources i tam wrzuć te obrazki i samo sie odpowiednio spakuje.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
0

Tak o to pytam, a mavena nie używam niestety. Da radę to zrobić bez tego?

0

Dodam jeszcze, że te pliki są w tym jarze po tym jak oznaczyłam katalog resources jako resources root. Jednak kiedy próbuje się do nich odwołać tak jak pisałam wyżej, to nie działa

jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
0

Rób prościej: używaj
this.getClass().getResourceAsStream("/add.png")
i tak uzyskany InputStream przekazuj do ImageIO. (pomijając FIle i inne dziwolągi które wewnątrz .jar nie bardzo działają).
(see https://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageIO.html#read(java.io.InputStream))

(zresztą getResouce daje URL, który też jest akceptowany przez ImageIO. Polecam korzystać z InputStream - bo to prosty i najbardziej ogólny typ).


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 2x, ostatnio: jarekr000000
0
jarekr000000 napisał(a):

Rób prościej: używaj
this.getClass().getResourceAsStream("/add.png")
i tak uzyskany InputStream przekazuj do ImageIO. (pomijając FIle i inne dziwolągi które wewnątrz .jar nie bardzo działają).
(see https://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageIO.html#read(java.io.InputStream))

(zresztą getResouce daje URL, który też jest akceptowany przez ImageIO. Polecam korzystać z InputStream - bo to prosty i najbardziej ogólny typ).

Dzięki!!! Działa :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.