Gestione risorse esterne in un file Jar.

di il
9 risposte

Gestione risorse esterne in un file Jar.

Salve a tutti,ho da poco iniziato a programmare in java.
Ho un applicazione che fa uso di un immagine.png,ma quando creo l'eseguibile e cambio computer non vedo piu' l'immagine. Ho inserito l'immagine dentro una cartella res al cui interno c'è appunto l'immagine di cui mi servo. Poi dentro un pannello in cui mi serve faccio questo:

String path="res"+File.separator+"freccia.png";
Toolkit t = Toolkit.getDefaultToolkit();
Image img = t.getImage(path);
g.drawImage(img, 0+y,50,this);

Spero di essere stato chiaro..Grazie mille a chi mi aiutera'

9 Risposte

  • Re: Gestione risorse esterne in un file Jar.

    Intanto leggi questo:
    https://www.iprogrammatori.it/forum-programmazione/java/includere-immagini-png-jar-eseguibile-t20364.html

    Se non capisci qualcosa chiedi pure...domattina però

  • Re: Gestione risorse esterne in un file Jar.

    Grazie per la risposta innanzitutto..comunque ho provato a fare come in quel modo ma ancora non funziona..Poi la mia è un immagine che va messa nel pannello e deve essere spostata ad ogni chiamata di piante component...Ripeto su Eclipse tutto funziona..appena eseguo il jar non va più
    Non so proprio cosa fare
  • Re: Gestione risorse esterne in un file Jar.

    Lollo2194 ha scritto:


    Grazie per la risposta innanzitutto..comunque ho provato a fare come in quel modo ma ancora non funziona..Poi la mia è un immagine che va messa nel pannello e deve essere spostata ad ogni chiamata di piante component...Ripeto su Eclipse tutto funziona..appena eseguo il jar non va più
    Non so proprio cosa fare
    URL imgUrl = TuaClasse.class.getResource("pippo.gif");

    (puoi anche usare getClass() se sei in un metodo di istanza)

    Siccome "pippo.gif" non inizia con '/', allora è relativo al package della TuaClasse. Quindi pippo.gif deve stare nello stesso package di TuaClasse.
  • Re: Gestione risorse esterne in un file Jar.

    Grazie mille
  • Re: Gestione risorse esterne in un file Jar.

    Ma se uso buffered Image come faccio a fare in modo che quando creo il jar eseguibile java mi metta le immagini insieme ai .class?
  • Re: Gestione risorse esterne in un file Jar.

    Lollo2194 ha scritto:


    Ma se uso buffered Image come faccio a fare in modo che quando creo il jar eseguibile java mi metta le immagini insieme ai .class?
    Non c'entra niente la classe che rappresenta la immagine o la API usata per il caricamento (ImageIO, AWT Toolkit, ecc..).

    Quando si usa il principio delle "risorse" (getResource/getResourceAsStream) si sfrutta la stessa logica che viene usata per trovare le classi, ovvero class loader e il "classpath".

    E come fare in modo che la risorsa finisca nel posto giusto insieme ai .class (sfusi o poi impacchettati in un jar), dipende solo da come viene fatta la fase di "build".

    In Eclipse per un normalissimo "Java Project", le risorse possono stare insieme ai sorgenti e ci pensa Eclipse a ribaltare le risorse nella directory dei "binari" insieme ai .class.
    Se il build è fatto con Maven, c'è una struttura convenzionale ben precisa per cui sorgenti .java e risorse sono in cartelle ben distinte.
    Se il build è fatto con Ant, chi scrive il build.xml può strutturare il progetto e definire la fase di build come gli pare.

    Per altri IDE/tool di build, va chiaramente compreso come funzionano.
  • Re: Gestione risorse esterne in un file Jar.

    Va bene quindi faccio come già mi avete consigliato :
    URL imgUrl = TuaClasse.class.getResource("pippo.gif");
    Ma questa l'istanza di URL, imgUrl dov'è che la devo usare? A me serve solo per caricare la risorsa..Mi potete fare un esempio per favore..Scusate ma sono un principiante ancora..
  • Re: Gestione risorse esterne in un file Jar.

    Lollo2194 ha scritto:


    Ma questa l'istanza di URL, imgUrl dov'è che la devo usare?
    Dipende quale API vuoi usare per caricare/trattare la immagine: ImageIcon? Il Toolkit di AWT? ImageIO? Tutte queste hanno almeno 1 metodo che riceve un URL.

    ImageIcon icon = new ImageIcon(url);

    Image img = Toolkit.getDefaultToolkit().getImage(url);

    BufferedImage img = ImageIO.read(url);
  • Re: Gestione risorse esterne in un file Jar.

    Grazie mille, finalmente ho risolto
Devi accedere o registrarti per scrivere nel forum
9 risposte