PDA

View Full Version : [JAVA] - Problema esecuzione programma java su linux e mac


clockover
09-04-2009, 11:34
Ciao a tutti!
Per l'università abbiamo un software in java che ci consente di capire i passaggi che il sottosistema di controllo effettua quando deve eseguire un comando assebler all'interno di un processore, più in dettaglio del PD32 (un processore didattico)!
Vengo al problema! Il programma è in java e abbiamo anche i sorgenti! Sono riuscito a sistemare un po le cose prendendo il software installato da windows trasferendolo su mac ma mi da un errore del tipo

Errore: java.io.FileNotFoundException: microOpGen\Leoweb/pd32.png (No such file or directory) nella lettura di un file


il file c'è eccome ho controllato!
vi do i link semmai qualcuno ha un po di tempo per aiutarmi!

Sorgenti
http://www.dis.uniroma1.it/~ciciani/microopgen/MicroOpGen_src_opt.zip

Installer windows
http://www.dis.uniroma1.it/~ciciani/microopgen/MicroOpGen.exe

Grazie a chi potrà aiutarmi

banryu79
09-04-2009, 11:40
Che sia questo?

Errore: java.io.FileNotFoundException: microOpGen\Leoweb/pd32.png (No such file or directory) nella lettura di un file

clockover
09-04-2009, 11:48
Che sia questo?

Errore: java.io.FileNotFoundException: microOpGen\Leoweb/pd32.png (No such file or directory) nella lettura di un file


Si ma il file c'è! Esiste!

JamalWallas
09-04-2009, 11:52
A naso direi che da qualche parte hai ultizzato riferimenti a file o cartelle da nel programma, e non vorrei dire una cretinata ma se non ricordo male c'è una differenza negli slash/backslash tra windows e unix, e quindi non trova dei file visto che i percorsi sono diversi.

clockover
09-04-2009, 11:57
Infatti avevo pensato proprio a quella differenza! Direi che se è quella comunque potrebbe essere un suicidio sostituire tutte le slash all'interno dei sorgenti!

JamalWallas
09-04-2009, 11:59
Quasi sicuramente è quello, mi sa che ti conviene fare un controllo all'inizio, e in base all'os gestisci la cosa...

JamalWallas
09-04-2009, 12:01
Quasi sicuramente è quello, mi sa che ti conviene fare un controllo all'inizio, e in base all'os gestisci la cosa...

System.getProperty("os.name");
System.getProperty("os.version");

Ti dicono OS e versione (ti basta solo l'OS in realtà...)

clockover
09-04-2009, 12:02
Quasi sicuramente è quello, mi sa che ti conviene fare un controllo all'inizio, e in base all'os gestisci la cosa...

Grazie mille!

Dark Phoenix
09-04-2009, 12:17
Per dovere di cronaca aggiungo che ci diversi metodi che ti consentono di disaccoppiarti dal sistemi operativo, ognuno con caratteristiche, precondizioni e sfumature diverse...

uno su tutti Class.getResource (http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getResource(java.lang.String))

Occhio alle dipendenze al S.O. altrimenti si rischia di perdere la portabilità di Java

banryu79
09-04-2009, 12:18
Esiste una system property chiamata "file.separator" che ti restituisce appunto il separatore utilizzato nei path del sistema su cui sta girando la jvm.

Usa quello e hai risolto il problema degli slash/backslash.

Nel mio post di poco fa forse non hai notato (in effetti si vede poco) che avevo messo in grassetto proprio i due diversi slash nel path...

Dark Phoenix
09-04-2009, 12:21
Esiste una system property chiamata "file.separator" che ti restituisce appunto il separatore utilizzato nei path del sistema su cui sta girando la jvm.

Usa quello e hai risolto il problema degli slash/backslash.

Nel mio post di poco fa forse non hai notato (in effetti si vede poco) che avevo messo in grassetto proprio i due diversi slash nel path...

si si infatti era "solo per cronaca" per aggiungere che volendo si puo' mantenere una scrittura univoca (hard-coded) sul programma utilizzando metodi di utilità come quello

71104
09-04-2009, 13:57
Si ma il file c'è! Esiste! non hai capito.


Esiste una system property chiamata "file.separator" che ti restituisce appunto il separatore utilizzato nei path del sistema su cui sta girando la jvm. esiste anche la costante File.separator

clockover
09-04-2009, 14:06
Esiste una system property chiamata "file.separator" che ti restituisce appunto il separatore utilizzato nei path del sistema su cui sta girando la jvm.

Usa quello e hai risolto il problema degli slash/backslash.

Nel mio post di poco fa forse non hai notato (in effetti si vede poco) che avevo messo in grassetto proprio i due diversi slash nel path...

Ottimo! Non conosco file.separator! Ora lo provo!
In effetti non riuscivo a capire come mai avevi quotato... non si vedeva il grassetto!

tomsmile
08-06-2011, 22:10
A naso direi che da qualche parte hai ultizzato riferimenti a file o cartelle da nel programma, e non vorrei dire una cretinata ma se non ricordo male c'è una differenza negli slash/backslash tra windows e unix, e quindi non trova dei file visto che i percorsi sono diversi.

Ti farei una statua! GRAZIEEEEEE!!!
Ore ed ore che mi rompo il cu## per capire che cavolo succedeva e poi invece scopro che era colpa di alcuni slash!
Stavo per modificare a mano 300 file (o almeno una parte) per la disperazione...
Vabeh... non dico altro che vi annoi! Ancora grazie!
http://www.cadlandia.com/cgi-bin/upload/MEM/201062492348_emoticon1.gif
Pure l'emoticon! :D