Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Esportare un file JAR - problema con immagini

    Ciao a tutti! Ho creato un giochino in java usando eclipse.
    Uso una sola immagine in questo modo:

    codice:
    ImageIcon im = new ImageIcon("src/imm/carta.gif");
    	l.setIcon(im);
    Quando clicco col destro sul progetto e faccio Export/Runnable JAR File finisce senza darmi errori ma poi quando lo faccio partire l'immagine non c'è.

    Qualcuno sa come aiutarmi?

  2. #2
    So che è un argomento molto trattato ma io proprio non riesco! ho provato ad usare tutti i metodi possibili ma non funziona!

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Esportare un file JAR - problema con immagini

    Originariamente inviato da Martina88
    codice:
    ImageIcon im = new ImageIcon("src/imm/carta.gif");
    	l.setIcon(im);
    Così tecnicamente è corretto ma ... quel src è "relativo" alla directory corrente. E comunque quando la applicazione vivrà per conto suo, sulla tua macchina o altrove, quel "src" non ha più senso di esistere!

    Se la immagine è nel jar, allora devi trattarla come "risorsa" ed ottenere un URL con il getResource() di java.lang.Class.

    Il getResource() si aspetta un nome di risorsa che NON è un pathname sul file-system vero e proprio. La ricerca della risorsa si basa sul concetto di "classpath", allo stesso modo di come vengono cercate le classi.

    codice:
    URL url = UnaTuaClasse.class.getResource("imm/carta.gif");
    Se UnaTuaClasse è una tua classe nel package com.esempio, allora la immagine verrà cercata lungo il classpath sotto un percorso com/esempio/imm/carta.gif

    La specifica della risorsa può anche iniziare con lo slash "/" e in tal caso si parte dalla radice, non dal package della classe usata.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Innanzitutto grazie per avermi risposto....ho gia provato anche ad usare quel metodo ma non funziona... Forse sbaglio qualcosa? Il nome della classe che devo inserire e quella della classe in cui sto lavorando? Va bene anche se e un jframe?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Martina88
    Forse sbaglio qualcosa?
    Purtroppo se non si è compreso bene il concetto di "classpath" e/o dei package, è facile "cannare" qualcosa in questi casi.

    Originariamente inviato da Martina88
    Il nome della classe che devo inserire e quella della classe in cui sto lavorando? Va bene anche se e un jframe?
    Tecnicamente qualunque classe, purché poi tramite una specifica "relativa" puoi raggiungere la risorsa.

    Ripeto meglio l'esempio:

    si ha una classe com.esempio.Prova, a livello di sorgenti ci sarà da qualche parte un ...blabla.../com/esempio/Prova.java

    Se in quello stesso package 'esempio' ci metti una cartella "imm" con dentro "carta.gif" allora quando tutto sarà compilato avrai due file:

    com/esempio/Prova.class
    com/esempio/imm/carta.gif

    Se fossero "sciolti" nel file-system, la "com" potrebbe stare in una qualunque directory Xyz, purché poi questa Xyz sia elencata nel classpath.

    Se fossero in un jar, quel "com" deve essere alla "radice" dentro il jar ma la struttura sarebbe esattamente come le due righe sopra. E il file.jar dovrebbe essere lui elencato nel classpath.

    Che siano nel file-system o in un jar, non cambierebbe assolutamente nulla (cioè funzionerebbe in entrambi i casi) se il caricamento venisse fatto con:

    codice:
    ... = new ImageIcon(Prova.class.getResource("imm/carta.gif"));
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Grazie mille!!! ora funziona!!!! grazie grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.