2010-11-20 2 views
4
class HelloWorld 
{ 
    public static void main(String[] args) 
    { 
     System.out.println("hey"); 
    } 
} 

Eingabeaufforderung Sitzung:compilieren Java-Programm mit javac erfolgreich ist, aber NoClassDefFoundError auf Lauf

C:\Users\zobdos\Desktop>javac HelloWorld.java 

C:\Users\zobdos\Desktop>dir *.class 
Volume in drive C is OS 
Volume Serial Number is A45E-7B01 

Directory of C:\Users\zobdos\Desktop 

11/20/2010 10:16 AM    417 HelloWorld.class 
       1 File(s)   417 bytes 
       0 Dir(s) 8,145,432,576 bytes free 

C:\Users\zobdos\Desktop>java HelloWorld 
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld 
Caused by: java.lang.ClassNotFoundException: HelloWorld 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClassInternal(Unknown Source) 
Could not find the main class: HelloWorld. Program will exit. 

C:\Users\btolbert\Desktop> 
+0

Hinweis: In der HelloWorld.java-Datei MUSS eine öffentliche HelloWorld Java-Klasse definiert werden. – Andreas

+0

@andreas: Nein, die Klasse braucht * nicht * öffentlich zu sein. Die Standardsichtbarkeit ist auch in Ordnung. Es ist nur für Klassen in anderen Paketen nicht sichtbar. – BalusC

Antwort

2

Nevermind, es funktioniert nach dem Gebrauch:

java -classpath . HelloWorld 
1

Lauf mit classpath zum aktuellen Verzeichnis angegeben :

java -cp . HelloWorld 
3

Sie haben eine %CLASSPATH% Umgebungsvariable in Ihrer Umgebung. Befreien Sie sich davon, es stört Ihre java Befehle, es ist eine schlechte Praxis von Sun Oracle sowieso gelehrt. Sobald Sie -classpath Argument oder seine -cp Kurzschrift verwenden, wird die %CLASSPATH% überschrieben. Wenn der Klassenpfad weder von der Umgebungsvariablen noch von den Argumenten angegeben wird, wird der aktuelle Pfad als Standard verwendet (wie ursprünglich erwartet).

Verwandte Themen