PDA

Visualizza versione completa : [Java] Non trova la classe


espiritos
07-03-2006, 20.44.32
Ciao,
quando cerco di far partire un programma scritto in java tramite la shell di windows mi da questo errore: "java.lang.NoClassDefFoundError" e devo sempre prima dare il comand set CLASSPATH= per farlo eseguire.
Quindi devo sempre dire set CLASSPATH= ad ogni uso dell'applicazione perchè se no non parte, però quando cerco di farlo partire tramite Eclipse o TextPad e lo stesso NetBeans mi da l'errore precedente.

Dav82
07-03-2006, 20.48.41
Rispetto a quale classe ti viene lanciata quell'eccezione?
A una classe tua o una libreria che usi?

Normalmente con IDE (come Eclipse o NetBeans) tutte le classi del progetto (comprese le librerie usate) vengono automaticamente messe nel path di esecuzione per l'IDE stesso, e non ci sono problemi... ovviamente per eseguire il programma da linea di comando (o tramite batch) queste librerie/file bisogna opportunamente includerle, altrimenti bisogna usare proprio il CLASSPATH.

Con qualche dettaglio in più forse si può risolvere ;)

espiritos
07-03-2006, 20.58.48
Guarda sono degli esempi di un libro, comunque l'errore è "Exception in thread "main" java.lang.NoClassDefFoundError: Welcome"
Il file è Welcome.Java
Non trova la classe Welcome?

Dav82
07-03-2006, 21.04.41
Aspè.. visto che è una sola classe e sarà semplice, posta il suo codice, e poi posta pure l'esatto comando che dai al prompt dei comandi :)

espiritos
07-03-2006, 21.07.25
public class Welcome
{
public static void main(String[] args)
{
String[] greeting = new String[3];
greeting[0] = "Welcome to Core Java";
greeting[1] = "by Cay Horstmann";
greeting[2] = "and Gary Cornell";

for (int i = 0; i < greeting.length; i++)
System.out.println(greeting[i]);
}
}



Ecco questo è il codice e i comandi che do sono i seguenti:
javac Welcome.java
java Welcome

però così non parte e da l'errore dopo java Welcome, allora per farlo andare devo fare:
set CLASSPATH=
javac Welcome.java
java Welcome

Dav82
08-03-2006, 03.15.26
Il codice e i comandi sono corretti (Y)

L'unica cosa che mi viene in mente è che non venga presa nel classpath la directory corrente :mm: cosa che per altro può succedere, ma non chiedermi il perchè :mm:

Comunque, basta che aggiungi il puntino "." nella variabile d'ambienti CLASSPATH (tasto destro su risorse del computer -> proprietà -> avanzate -> variabili d'ambiente -> variabili di sistema), oppure dai il comando "java -cp . Welcome".


E' un'idea eh, perchè tutto è corretto :)

espiritos
08-03-2006, 13.46.12
Ho guardato nelle variabili d'ambiente e ho trovato che la variabile CLASSPATH era così: "CLASSPATH=C:\Programmi\QuickTime\QTSystem\QTJava.z ip"
Cioè puntava a quicktime. :eek:
Ho messo allora il "." in CLASSPATH ed è partito.
Lascio così e che sicuramente funziona tutto o devo mettere un'altra stringa in CLASSPATH?
Comunque grazie dell'aiuto!
Ciao :cool:

Dav82
08-03-2006, 14.16.42
Se così funziona, lascia così :)

Quel riferimento a quicktime è stato probabilmente messo da quicktime durante l'installazione, per poter usare delle proprie librerie quando viene eseguito :)