PDA

View Full Version : [JAVA -ECLIPSE] problemi percorso file


mone.java
28-07-2009, 18:03
Salve a tutti. Il mio problema è :
ho un programma che necessita di leggere delle immagini in una certa cartella:

C:\Documents and Settings\Administrator\Desktop\MasieroSPA\images\lang

e lanciando il programma da eclipse, creando un file in codesto modo (new File("images"+File.separator+"lang")) che per l'appunto punta alla cartella lang, il programma funziona senza problemi

ma lanciandolo da riga di comando invece (nella cartella bin, che si trova nella cartella masieroSPA, do -> java it.cre.Main) non funge poichè il percorso diventa C:\Documents and Settings\Administrator\Desktop\MasieroSPA\bin\images\lang

che comando esegue eclipse per far si che quando inizializzo il file esso sia corretto??

Grazie, Simone.

^TiGeRShArK^
28-07-2009, 18:57
"../images/lang" ?

PGI-Bis
28-07-2009, 21:04
Come hai notato i percorsi di File relativi sono risolti rispetto al valore attuale della proprietà user.dir che corrisponde alla working directory del processo. In pratica dipende da come lanci il programma.

Per risorse ubicate in percorsi relativi al classpath si usa:

getClass().getResource("/immagini/lang/helloworld.png");

Restituisce un URL e lavora con i file, con i percorsi di rete e con gli archivi jar/zip.

Perchè funzioni nel tuo progetto è richiesto che la cartella "immagini" sia inclusa nel classpath. Esistono dei percorsi inclusi nel classpath per definizioni. Tipicamente si usano archivi jar: o quello che contiene l'eseguibile java o un altro archivio jar incluso nel classpath del jar eseguibile tramite l'attributo Class-Path del suo manifesto.

mone.java
29-07-2009, 10:17
esatto è proprio quello che intendo qual è la differenza tra l'esecuzione del programma di eclipse e quella che faccio manualmente io da shell???

PGI-Bis
29-07-2009, 10:45
L'esecuzione da netbeans (o da altro ide java) imposta un classpath che comprende tutte le librerie non standard eventualmente richieste dal progetto.

Non c'è una differenza irriproducibile da console.

In generale il tuo programma se è un programma java stand-alone - cioè che non necessita si servizi accessori tipo database, application server eccetera - dovrebbe girare tranquillamente con un:

java -jar NomeDelFileJar.jar

mone.java
29-07-2009, 10:57
si infatti stò riconvertendo il codice per poter usare un jar con i relativi URL al posto dei File!!! Grazie a tutti!!!