Imansible trovare la class principale HelloWorld

Ho installato Java 1.7.0 nella seguente cartella C:\Program Files\Java . Il mio sistema operativo è Windows XP (versione 2002) con Service Pack 3.

Le variabili di ambiente che ho impostato sono:

Ho presentato qui i nomi delle classi che sono nel mio sistema.

Successivamente ho scritto un programma, HelloWorld.java:

 import java.io.*; class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } 

Quando sto compilando usando javac HelloWorld.java si sta compilando bene.

Ma dopo aver rilasciato java HelloWorld sto riscontrando l’errore seguente:

 Error: Could not find main class HelloWorld Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:198) Caused by: java.lang.ClassNotFoundException: HelloWorld at java.net.URLClassLoader$1.run(URLClassLoader.java:299) at java.net.URLClassLoader$1.run(URLClassLoader.java:288) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:287) at java.lang.ClassLoader.loadClass(ClassLoader.java:422) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:325) at java.lang.ClassLoader.loadClass(ClassLoader.java:355) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:195) 

Dopo un po ‘di ricerche, ho scoperto che potrebbe esserci qualcosa di sbagliato nella variabile di ambiente. Ho provato a giocare con questo, ma senza fortuna.

Ho anche RESTARTED la macchina e poi di nuovo ho provato a correre, ma con lo stesso destino.

Non stai impostando un classpath che include la tua class compilata! java non riesce a trovare nessuna class se non dici dove cercare.

 java -cp [compiler outpur dir] HelloWorld 

Per inciso non è necessario impostare CLASSPATH come hai fatto.

Dillo dove cercare la tua class: è in “.”, Che è la directory corrente:

 java -classpath . HelloWorld 

Non è necessario impostare JAVA_HOME o CLASSPATH in questo caso

Basta rimuovere il “classpath” dalla tua variabile di ambiente. Quindi prova a correre:

 java HelloWorld 

Questo dovrebbe funzionare bene.

Java non sta trovando dove si trova il file di class compilato (HelloWorld.class). Utilizza le directory e i file JAR nella CLASSPATH ambiente CLASSPATH per la ricerca se non viene fornita -classpath opzione -cp o -classpath quando si esegue java.exe.

Non è necessario il file rt.jar nel CLASSPATH , questi erano necessari solo per le versioni precedenti di Java. Puoi lasciarlo indefinito e verrà utilizzata la directory di lavoro corrente, o semplicemente aggiungere . (un singolo punto), separati da ‘;’, alla variabile CLASSPATH per indicare la directory corrente:

CLASSPATH: .;C:\...\some.jar

In alternativa puoi usare l’opzione -cp o -classpath :

 java -cp . HelloWorld 

E, come ha scritto Andreas, JAVA_HOME non è necessario da Java, solo per alcuni strumenti di terze parti come ant (ma dovrebbe indicare la posizione corretta).

O vuoi aggiungere “.” al CLASSPATH per specificare la directory corrente o aggiungerla manualmente in fase di esecuzione come suggerito da unbeli.

mettere .; al valore del percorso di class in beginning..it inizierà a funzionare … succede perché cerca il file di class in classpath che è menzionato nella variabile path.

JAVA_HOME non è necessario se avvii java e javac dalla riga di comando. Ma JAVA_HOME dovrebbe puntare alla vera directory jdk, C:\Program Files\Java\jdk1.7.0 nel tuo caso.

Non userei mai la CLASSPATH ambiente CLASSPATH al di fuori degli script di compilazione, specialmente se non definita a livello globale. Il flag -cp è migliore. Ma nel tuo caso, dato che non hai bisogno di librerie aggiuntive ( rt.jar non conta), non avrai bisogno di una dichiarazione del classpath. Un -cp mancante è equivalente a -cp . e questo è quello che ti serve qui)

La class HelloWorld deve essere dichiarata public . Questo in realtà potrebbe essere la causa dei tuoi problemi. (Ero abbastanza sicuro, che un file sorgente ha bisogno di una class pubblica … o era al massimo una class pubblica?)

Ho avuto lo stesso problema. Forse, il problema è che hai compilato ed eseguito la class con diverse versioni di Java.

Assicurati che la versione del compilatore sia la stessa del comando “java” :

 javac -version java -version 

In Linux, usa

sudo update-alternatives –config java

per cambiare la versione di Java.

Ho anche affrontato lo stesso problema ….

In realtà questo problema viene sollevato a causa del fatto che i file del programma .class non vengono salvati in quella directory. Rimuovere CLASSPATH dalla variabile di ambiente (non è necessario impostare classpath per i programmi Java semplici) e riaprire il prompt cmd, quindi compilare ed eseguire.

Se osservi attentamente il tuo file .class salverà nella stessa posizione. (Non sono un esperto, sono anche programmatore di base se c’è qualche errore nelle mie frasi per favore ignoralo :-))

Sembra che tu abbia eseguito tutte le impostazioni correttamente, ma potrebbe esserci un’area in cui potrebbe causare problemi

Controlla il valore della variabile “CLASSPATH” e assicurati che alla fine tu abbia mantenuto ;

Nota :; è per il separatore finale . è per includere il percorso esistente alla fine