PDA

View Full Version : Non capisco quest'errore!! JAVA


thefrog
17-03-2003, 16:58
quando compilo il mio file il compilatore non mi da errori, poi quando vado ad eseguire il file mi da questo messaggio:

Exception in thread "main" java.lang.NoSuchMethodError: main

non capisco, da cosa può essere generato se durante la compilazione non ci sono errori???

LEGGI DA QUI!!
per eviatre di parire un altro thread aggiungo qua il problema di ora...

liste è il nome della classe...
sapete dirmi che tipo di errore ho fatto?
compila correttamente ma durante l'esecuzione a un certo punto mi da questo errore...

Exception in thread "main" java.lang.NullPointerException at liste.main <liste.java:61>

soalle
17-03-2003, 18:52
non trova la classe contenente il main.... probabilmente mandi in esecuzione la classe sbagliata... o usi un ide?

thefrog
17-03-2003, 19:19
il main l'avevo messo nella stessa classe in cui era implementato il metodo, ho provato anche a dividere il main dal resto e metterlo in un altro file ma...niente...
eccolo qua...perchè non va bene???

soalle
17-03-2003, 19:23
manca giusto lo "static"... ;)

thefrog
17-03-2003, 19:51
grazie mmmmmille...per una bischerata del genere ci avrei perso un casino di tempo....grazie ancora...

thefrog
19-03-2003, 16:26
upp...
ho aggiunto un problema nuovo in cima, ho fatto così per non aprire un altro thread che sarebbe stato utile a pochi...
dai datemi una manina...lo so che i problemi che vi sottopongo sono spesso errori banali... :muro:

PGI
19-03-2003, 16:57
E' possibile che tu stia cercando di utilizzare una variabile dichiarata ma non inizializzata, ad esempio

...
Vector c=null;
...
void faiqualcosa() {
c.add("ciao");
}

La compilazione avviene correttamente ma quando si passa all'esecuzione viene restituita un'eccezione NullPointerException.
Lo stesso succede quando si accede ai metodi o proprietà di un elemento di un array non inizializzato, ad esempio

...
Object[] data=new Object[10];
...
void faiqualcosa() {
System.out.println(data[5].toString());
}
.

Se posti il codice si dovrebbe vedere subito.

Ciao.

thefrog
19-03-2003, 17:01
mi dici come si fa a inserire il codice in un post come hai fatto te?

thefrog
19-03-2003, 17:21
l'ho scoperto....scusate...
allora il codice è questo...




public class liste
{
public static void main (IntSSList l1, IntSSList l2)
{
IntNode x = l1.head;
IntNode y = l2.head;
IntSSList list = new IntSSList();
while((x!=null)&&(y!=null))
{
if(x.chiave<y.chiave)
{
list.addToTail(x.chiave);
x=x.next;
}
else
{
list.addToTail(y.chiave);
y=y.next;
}
}
while(x!=null)
{
list.addToTail(x.chiave);
x=x.next;
}
while(y!=null)
{
list.addToTail(y.chiave);
y=y.next;
}
}
public static void main(String[] args)
{
IntNode head = null;
IntNode tail = null;
//es 3
System.out.println("Inserire il numero di dati che saranno nella lista");
int howMany = SavitchIn.readInt();
int count = 1;
IntSSList l = new IntSSList();
while(count<=howMany)
{
System.out.println("Inserire il dato");
if((count%2)!=0)
{
l.addToHead(SavitchIn.readInt());
count++;
}
else
{
l.addToTail(SavitchIn.readInt());
count++;
}
}
l.printAll();
System.out.println();
IntNode testing = head;
for(int i = 0; i < howMany; i++)
{

if((testing.chiave%2)==0)
{
l.delete(head.chiave);

}
}
l.printAll();
System.out.println();
}

}



l'errore avviene nell'ultimo ciclo for...

soalle
19-03-2003, 19:07
L'errore è quando fai:

"head.chiave"

il riferimento head è dichiarato a null all'inizio del codice e non viene più modificato...

PGI
19-03-2003, 19:11
L'eccezione viene generata nel condizionale:

if((testing.chiave...

Infatti testing fa riferimento a head che è dichiarato null nella prima linea del metodo main e rimane null perchè privo di inizializzazione. Dando un valore all'oggetto IntNode head (che presumo sia un AbstractCollection o un contenitore di primitivi) il problema dovrebbe risolversi.

Tutto questo a patto che non mi sia sfuggita l'inizializzazione di head...

Fammi sapere.

Ciao.

P.S.

Azz, Soalle scrivi troppo in fretta :D

soalle
19-03-2003, 19:15
Originally posted by "PGI"

Azz, Soalle scrivi troppo in fretta :D

Perché??? ;)

No... comunque ha ragione PGI l'eccezione viene generata prima sempre a causa dell'head a null...

PGI
19-03-2003, 19:26
Originally posted by "soalle"



Perché??? ;)


Quando ho iniziato a rispondere il tuo post ancora non c'era, c'ho messo 7 minuti per scrivere in un panegirico quello che tu hai sintetizzato in tre righe! :D

Comunque meglio 2 risposte che nessuna! :D

Ciao.

thefrog
19-03-2003, 19:42
grazie grazie...mi avete risparmiato un pò di ammttimento...ora mi rimane un problema nel codice ma è di tipo logico, non esegue esattamente quello che voglio .....ma questo lo risolvo in un modo o nell'altro....grazie e...alla prossima ;)

cn73
20-03-2003, 10:35
Il null pointer è un errore così detto di "RunTime". Infatti la compilazione avviene correttamente, solo a runtime è possibile scoprirlo ;)

alphacygni
20-03-2003, 15:56
Originally posted by "cn73"

Il null pointer è un errore così detto di "RunTime". Infatti la compilazione avviene correttamente, solo a runtime è possibile scoprirlo ;)

Io direi che e' L'Errore di runtime...;)