Progetto in Java

freddofede
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?

Risposte
superpunk733
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

anonymous_be1147
"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

freddofede
Errore sottile: javac al posto di java... correggendo però il risultato è lo stesso.

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.

anonymous_be1147
"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

freddofede
Con i : parte... strano pero ci siano stati indicati per il mac.. comunque, quale sarebbe la differenza?

anonymous_be1147
"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.

freddofede
Grazie di tutto ;-) comunque strano ci sia stato indicato diversamente.

anonymous_be1147
"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. :-D

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

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.