PDA

View Full Version : [Java] Aiuto Problema con Java e Xcode


Elrond89
04-03-2009, 19:40
Ho compilato questo programma, chiamato gioco della vita su xcode
import java.util.*;

public class GiocoDellaVita {

public static void main (String args[]) {
Scanner s= new Scanner (System.in);
System.out.print("Quante righe?");
int n= s.nextInt();
System.out.print("Quante colonne?");
int m= s.nextInt();

char [][]mappa= new char [n][m];
leggiConfigurazione(mappa);
System.out.print ("Quante generazioni?");
int g= s.nextInt();
for (int i=0; i<g; i++) {
char [][] nuovaGen= prossimaGenerazione(mappa);
stampaRigheMatrice (nuovaGen);
mappa=nuovaGen;
}// for
}// main


public static void stampaRigheMatrice(char[][] A) {
for (int i=0; i<A.length; i++) { // scandisce righe
for (int j=0; j<A[0].length; j++) // scandisce elementi riga i
System.out.print(A[i][j]+" "); // stampa elemento riga
System.out.println(); // fine riga
}
}//fine metodo

static char[][] prossimaGenerazione (char [][]a){
char b[][]= new char [a.length][a[0].length];
for (int i=0; i<b.length; i++)
for (int j=0; j<b[0].length; j++){
int v= vicini(a,i,j);
if (a[i][j]=='*')
b[i][j]= (v==2 || v==3) ? '*': '.';
else
b[i][j]= (v==3) ?'*': '.';
}// for
return b;
}//metodo

static int vicini (char[][]a, int i, int j) {
int cv=0;// conta i vicini
if (i>0 && a[i-1][j]=='*') cv++;//nord
if (i>0 && j<a[0].length-1 && a[i-1][j+1]=='*') cv++;
if (j>a[0].length-1 && a[i][j+1]== '*') cv++;
if (i<a.length-1 && j<a[0].length-1 && a[i+1][j+1]=='*') cv++;
if (i<a.length-1 && a[i+1][j]=='*') cv++;
if (i<a.length-1 && j>0 && a[i+1][j-1]=='*') cv++;
if (j>0 && a[i][j-1]=='*') cv++;
if (i>0 && j>0 && a[i-1][j-1]=='*') cv++;
return cv;
}// vicini

static void leggiConfigurazione (char[][]a) {
Scanner b= new Scanner (System.in);
String line= null;
for (int i=0; i<a.length; i++) {
line=b.nextLine();
if (line.length()!=a[0].length) {
System.out.println("Lunghezza della linea scorretta");
System.exit(-1);
}// fine
for (int j=0; j<a[0].length; j++)
a[i][j]=line.charAt(j);
}// fine for
} //fine leggiConfigurazione

}

E Xocde mi da il seguente errore quando cerco di eseguirlo:
[Session started at 2009-03-04 18:56:40 +0100.]
Picked up _JAVA_OPTIONS: -Xdebug -Xnoagent -Xrunjdwp:transport=dt_local,server=y,address=8000
Listening for transport dt_local at address: 8000
Quante righe?JavaBug>

Non mi era mai capitato che mi desse un errore del genere e non riesco a capire cos'abbia.
Ho dato il mio codice a un mio amico che usa Textpad e sul suo computer funzionava perfettamente, quindi credo che il codice sia corretto ma c'è qualcosa che non va in Xcode.

Qualcuno può aiutarmi? Inoltre potete consigliarmi dei metodi alternativi per compilare in java su Mac (magari direttamente da Terminale)

^TiGeRShArK^
04-03-2009, 19:44
..scaricati eclipse o netbeans, per java sono nettamente meglio, xcode mi sa che è un pò inutile anche tenendo conto del fatto che javacocoa non è + supportato da leopard in poi...

Elrond89
04-03-2009, 19:54
..scaricati eclipse o netbeans, per java sono nettamente meglio, xcode mi sa che è un pò inutile anche tenendo conto del fatto che javacocoa non è + supportato da leopard in poi...

Hai qualche idea sul perché mi dia quell'errore?

^TiGeRShArK^
04-03-2009, 20:07
Hai qualche idea sul perché mi dia quell'errore?

in realtà non ho capito quale errore ti dia dato che correttamente ti chiede di inserire il numero di righe... :fagiano:

Elrond89
04-03-2009, 20:10
in realtà non ho capito quale errore ti dia dato che correttamente ti chiede di inserire il numero di righe... :fagiano:

Sì, ma una volta inserito mi dice "Unknown command"

^TiGeRShArK^
04-03-2009, 20:13
prova a farlo partire dal terminale spostandoti in quella directory e scrivendo java GiocoDellaVita e vedi che succede...

Elrond89
04-03-2009, 20:44
prova a farlo partire dal terminale spostandoti in quella directory e scrivendo java GiocoDellaVita e vedi che succede...

Ecco cosa mi dicehost187-14-dynamic:~ antonioruffolo$ java GiocoDellaVita/Users/antonioruffolo/Desktop/Programmi/GiocoDellaVita/src/GiocoDellaVita.java
Exception in thread "main" java.lang.NoClassDefFoundError: GiocoDellaVita/Users/antonioruffolo/Desktop/Programmi/GiocoDellaVita/src/GiocoDellaVita/java
Caused by: java.lang.ClassNotFoundException: GiocoDellaVita.Users.antonioruffolo.Desktop.Programmi.GiocoDellaVita.src.GiocoDellaVita.java
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:288)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)

^TiGeRShArK^
04-03-2009, 20:50
non lo devi lanciare dalla cartella dei sorgenti, ma da quella che contiene il .class
comunque se c'è una cartela GiocoDellaVita significa che c'è anche un package e quindi devi lanciarla col comando java GiocoDellaVita.GiocoDellaVita dalla cartella dei compilati (classes o bin o qualcosa del genere);

Elrond89
04-03-2009, 21:01
non lo devi lanciare dalla cartella dei sorgenti, ma da quella che contiene il .class
comunque se c'è una cartela GiocoDellaVita significa che c'è anche un package e quindi devi lanciarla col comando java GiocoDellaVita.GiocoDellaVita dalla cartella dei compilati (classes o bin o qualcosa del genere);

Mi dà lo stesso errore:
host187-14-dynamic:~ antonioruffolo$ java GiocoDellaVita/Users/antonioruffolo/Desktop/Programmi/GiocoDellaVita/bin/GiocoDellaVita.class
Exception in thread "main" java.lang.NoClassDefFoundError: GiocoDellaVita/Users/antonioruffolo/Desktop/Programmi/GiocoDellaVita/bin/GiocoDellaVita/class
Caused by: java.lang.ClassNotFoundException: GiocoDellaVita.Users.antonioruffolo.Desktop.Programmi.GiocoDellaVita.bin.GiocoDellaVita.class
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:288)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)

wingman87
04-03-2009, 21:08
Scrivi GiocoDellaVita senza ".class"

Elrond89
04-03-2009, 21:16
Scrivi GiocoDellaVita senza ".class"

Il percorso è questo: /Users/antonioruffolo/Desktop/Programmi/GiocoDellaVita/bin/GiocoDellaVita.class

Potresti scrivere direttamente tu il comando, io non ho molta confidenza col terminale.

wingman87
04-03-2009, 21:41
Dovrebbe essere così:
cd Users/antonioruffolo/Desktop/Programmi/GiocoDellaVita/bin/
java GiocoDellaVita

EDIT: Non so come mi era finito un "GiocoDellaVita/" prima di Users... L'ho notato grazie al post di Tigershark

^TiGeRShArK^
05-03-2009, 05:03
Il percorso è questo: /Users/antonioruffolo/Desktop/Programmi/GiocoDellaVita/bin/GiocoDellaVita.class

Potresti scrivere direttamente tu il comando, io non ho molta confidenza col terminale.

cd /Users/antonioruffolo/Desktop/Programmi/GiocoDellaVita/bin
java GiocoDellaVita

Elrond89
05-03-2009, 14:09
Ok, ora funziona perfettamente, grazie mille per l'aiuto, purtroppo non sono riuscito a capire perché Xcode non riesca a eseguirlo.