PDA

View Full Version : [Java] Caricamento delle risorse in un jar


Tzor
06-02-2011, 19:34
Ciao a tutti, ho il seguente problema:
Ho un Java Project in Eclipse che utilizza due immagini jpg. Queste due immagini sono in nella folder "resources" all'interno della directory "src" del mio progetto, dove ci sono i package per intenderci. Per riferirmi alle due immagini utilizzo il path "src/resources/immagine.jpg" e ovviamente funziona solo se faccio il run da eclipse.

Quello che vorrei fare è creare un jar eseguibile in modo che non mi dia l'eccezione IOException per la mancata apertura delle immagini. Le due immagini devono essere contenuto all'interno della folder "resources", a sua volta contenuta nel file jar, in modo da poter distribuire l'applicazione unicamente in un jar contenente già le immagini.

Come devo fare? C'è qualche guida esauriente? :stordita:

Thanks.

Tzor
07-02-2011, 12:02
Ho risolto così:

getClass().getClassLoader().getResourceAsStream("resources/immagine.jpg");


Ora però ho un altro problema. La mia applicazione salva un file config.properties (utilizzo la classe Properties). Quando eseguo il file jar eseguibile mi crea questo file di configurazione all'esterno del jar.
Mi servirebbe sapere se sia possibile creare ed aggiornare il file config.properties all'interno del jar eseguibile.

PGI-Bis
07-02-2011, 16:36
Per aggiornare il jar devi rigenerarlo. L'operazione in sè non è complicata (apri il jar vecchio, ne crei uno nuovo, trasferisci le voci del vecchio jar nel nuovo, quando trovi l'elemento che vuoi rimpiazzare scarti la vecchia voce e ne metti una nuova al suo posto, alla fine scambi il vecchio jar file col nuovo), ha il vantaggio che tutto resta dov'era ma non è molto efficiente perchè per cambiare qualche byte devi leggerne e scriverne una marea.

Tra le diverse soluzioni possibili potresti optare per l'inserimento nel jar del file di configurazione predefinito e la duplicazione dello stesso nel "registro" dell'utente (package java.util.prefs e correlati) alla prima esecuzione. Dalla seconda esecuzione in poi aggiorni e usi i valori che trovi nel tuo Preferences.