Progetto in Java
Salve a tutti,
sto svolgendo un progetto in linguaggio java che consiste nella realizzazione di un giocatore di mastermind, un rompicapo da giocare uno contro uno. Le istruzioni per testare il giocatore ci sono state fornite a questo indirizzo:
http://pamela.dsi.unifi.it/piluc/mo.../view.php?id=22
sezione appunto "mastermind". Dopo aver compilato i giocatori "Scheleton.class" e "Scheleton2.class" dallo stesso file .java, do il comando:
/opt/jdk1.5.0_04/bin/javac -cp .;./mastermind.jar MasterMind 100 Scheleton Scheleton2 config0806.cfg
nella shell di Linux, mi ritorna
bash: ./mastermind.jar: cannot execute binary file
dov'è il problema?
sto svolgendo un progetto in linguaggio java che consiste nella realizzazione di un giocatore di mastermind, un rompicapo da giocare uno contro uno. Le istruzioni per testare il giocatore ci sono state fornite a questo indirizzo:
http://pamela.dsi.unifi.it/piluc/mo.../view.php?id=22
sezione appunto "mastermind". Dopo aver compilato i giocatori "Scheleton.class" e "Scheleton2.class" dallo stesso file .java, do il comando:
/opt/jdk1.5.0_04/bin/javac -cp .;./mastermind.jar MasterMind 100 Scheleton Scheleton2 config0806.cfg
nella shell di Linux, mi ritorna
bash: ./mastermind.jar: cannot execute binary file
dov'è il problema?
Risposte
Non ci vuole una macchina virtuale per lanciare il file?
cioe con il comando ./ si lanciano i file ad es. ./quellochetipare.out (quelli compilati), mentre il java mi pare essere interpretato, quindi credo ti ci voglia una macchina virtuale
cioe con il comando ./ si lanciano i file ad es. ./quellochetipare.out (quelli compilati), mentre il java mi pare essere interpretato, quindi credo ti ci voglia una macchina virtuale
"lore":
do il comando:
/opt/jdk1.5.0_04/bin/javac -cp .;./mastermind.jar MasterMind 100 Scheleton Scheleton2 config0806.cfg
nella shell di Linux, mi ritorna
bash: ./mastermind.jar: cannot execute binary file
dov'è il problema?
Come ha già detto superpunk733 ti serve una JVM per eseguirlo, quindi devi dare un comando del tipo:
/opt/jdk1.5.0_04/bin/java -jar mastermind.jar MasterMind 100 Scheleton Scheleton2 config0806.cfg
Errore sottile: javac al posto di java... correggendo però il risultato è lo stesso.
Sennò come hai suggerito tu:
?
NOTA: il fatto è che il codice della forma
JDK_HOME/bin/java -cp .;./mastermind.jar MasterMind p class1 class2 configfile
funziona ad altre persone, essendo anche quello proposto dal docente.
Sennò come hai suggerito tu:
/opt/jdk1.5.0_04/bin/java -jar mastermind.jar MasterMind 100 Scheleton Scheleton2 config0806.cfg Failed to load Main-Class manifest attribute from mastermind.jar
?
NOTA: il fatto è che il codice della forma
JDK_HOME/bin/java -cp .;./mastermind.jar MasterMind p class1 class2 configfile
funziona ad altre persone, essendo anche quello proposto dal docente.
"lore":
come hai suggerito tu:
/opt/jdk1.5.0_04/bin/java -jar mastermind.jar MasterMind 100 Scheleton Scheleton2 config0806.cfg Failed to load Main-Class manifest attribute from mastermind.jar
Credo dipenda da come è stato creato il package...
"lore":
JDK_HOME/bin/java -cp .;./mastermind.jar MasterMind p class1 class2 configfile
funziona ad altre persone, essendo anche quello proposto dal docente.
Prova a sostituire il punto e virgola con due punti, così:
JDK_HOME/bin/java -cp .:./mastermind.jar MasterMind p class1 class2 configfile
Con i : parte... strano pero ci siano stati indicati per il mac.. comunque, quale sarebbe la differenza?
"lore":
Con i : parte... strano pero ci siano stati indicati per il mac.. comunque, quale sarebbe la differenza?
Dipende dal sistema operativo. Se non ricordo male anche in Windows si usa il punto e virgola per separare i percorsi di ricerca delle classi nell'opzione -cp, mentre in Unix, quindi anche Linux, si segue evidentemente la tradizione della Bourne Shell (vedi output comando set | grep PATH della shell) per separare le directory.
Grazie di tutto
comunque strano ci sia stato indicato diversamente.

"lore":
comunque strano ci sia stato indicato diversamente.
Infatti, forse il Prof. era convinto che non ci fosse nessuno tra i suoi studenti capace di usare Linux e che tutte le matricole devono usare necessariamente Windows.

Il bello è che il tipo in questione è un pinguinaro convinto
! (basta che leggi in che ordine ha messo i vari codici da inserire a seconda del SO
)

