View Full Version : [JAVA] strano errore di compilazione
DrZoidberg
08-04-2006, 13:55
Aiuto!!! Ho un problema!!! Sono di fronte ad un errore di compilazione mai visto prima e nn so cosa vuol dire!!!
Ho creato il mio file, che si chiama leggi.java . Non mi da nessun errore in fase di compilazione ... mi crea il file leggi.class .
Provo ad eseguirlo, con il comando java leggi....ma mi genera quest'eccezione:
Exception in thread "main" java.lang.NoClassDefFoundError: leggi
Cosa significa? Da cosa dipende? ho provato con altri file ( anche semplici che fanno solo una stampa su schermo ) e mi da sempre lo stesso errore!!!! :muro:
aiutatemi please!!
grazie
Controlla che il nome del tipo pubblico primario dichiarato nell'unità di compilazione corrisponda al nome del file .java.
Il nome della classe è leggi o Leggi? Ne hai dichiarato l'appartenenza ad un package?
Exception in thread "main" java.lang.NoClassDefFoundError: leggi
Cosa significa? Da cosa dipende? ho provato con altri file ( anche semplici che fanno solo una stampa su schermo ) e mi da sempre lo stesso errore!!!! :muro:Come ha già detto PGI-Bis, la prima cosa da controllare è se il tuo sorgente ha una classe marcata public e che, in tal caso, il nome del file sorgente corrisponda esattamente al nome della classe.
Ma c'è anche un'altra questione: quella del CLASSPATH. Se hai questa variabile di ambiente impostata a qualcosa, verifica che tra i vari path ci sia anche il "." (punto) che indica la directory corrente.
Se la variabile CLASSPATH non è impostata, il classpath di default è la directory corrente altrimenti, se impostata, "sovrascrive" il classpath e quindi è necessario avere il "." tra i path per avviare una classe nella directory corrente!
franksisca
09-04-2006, 09:03
Come ha già detto PGI-Bis, la prima cosa da controllare è se il tuo sorgente ha una classe marcata public e che, in tal caso, il nome del file sorgente corrisponda esattamente al nome della classe.
Ma c'è anche un'altra questione: quella del CLASSPATH. Se hai questa variabile di ambiente impostata a qualcosa, verifica che tra i vari path ci sia anche il "." (punto) che indica la directory corrente.
Se la variabile CLASSPATH non è impostata, il classpath di default è la directory corrente altrimenti, se impostata, "sovrascrive" il classpath e quindi è necessario avere il "." tra i path per avviare una classe nella directory corrente!
credo che il problema sia proprio queso, al massimo soluzione molto rudimentale, prova a portare il file .class nella cartella bin del jdk ed eseguilo da lì, se funziona il problema è il classpath, altrimenti vedremo;)
DrZoidberg
09-04-2006, 15:01
credo che il problema sia proprio queso, al massimo soluzione molto rudimentale, prova a portare il file .class nella cartella bin del jdk ed eseguilo da lì, se funziona il problema è il classpath, altrimenti vedremo;)
il file class si trova già nella cartella bin del jdk.....
Fenomeno85
09-04-2006, 15:09
allora devi usare
java -cp . NomeClasse
miracco a mettere gli spazi ;)
~§~ Sempre E Solo Lei ~§~
C'è qualcosa che non va. Non è che la cartella bin del JDK sia una cartella speciale a fronte della quale la piattaforma Java assume una volontà propria.
Il programma deve andare con:
java NomeClasse
con "java" eseguito dalla directory in cui si trova la radice del package a cui appartiene la classe NomeClasse (considerando i file class distribuiti in cartelle che rispecchino i nomi dei package).
Va perchè, come rileva andbin, la jvm ottiene come percorso standard di ricerca anche la cartella di lavoro del programma java.exe.
E' possibile che la tua cartella di lavoro non sia la stessa su indicata? In quel caso devi segnalare a java.exe il percorso di ricerca delle classi, in forma di directory radice del package a cui appartiene leggi.class:
java -cp c:\programmi\java\pim\pum\pam leggi
Circa la variabile CLASSPATH è dal 1918 che non si usa più per la piattaforma Java standard, sostituita dal meccanismo dalle pluggable extensions. Se hai una variabile CLASSPATH, a servizio della piattaforma java, eliminala.
Va perchè, come rileva andbin, la jvm ottiene come percorso standard di ricerca anche la cartella di lavoro del programma java.exe.No, io ho solo detto che se ha la variabile CLASSPATH impostata, bisogna verificare che tra i path ci sia il ".".
Circa la variabile CLASSPATH è dal 1918 che non si usa più per la piattaforma Java standard, sostituita dal meccanismo dalle pluggable extensions. Se hai una variabile CLASSPATH, a servizio della piattaforma java, eliminala.Sì, è vero ... lo dice anche la stessa Sun:
The -classpath option is preferred because you can set it individually for each application without affecting other applications and without other applications modifying its value.
Ma a me personalmente non piace. Io uso solo la variabile CLASSPATH e non ho problemi!
Poi ognuno fa come meglio crede, ovviamente! ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.