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

session d'invite de commande:Compiling programme Java avec javac réussit, mais NoClassDefFoundError sur l'exécution

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

Remarque: dans le fichier HelloWorld.java, une classe publique HelloWorld java DOIT être définie. – Andreas

+0

@andreas: non, la classe n'a pas * besoin * d'être publique. La visibilité par défaut est également bonne. Ce n'est visible que pour les classes des autres paquets. – BalusC

Répondre

2

Nevermind cela fonctionne après l'utilisation:

java -classpath . HelloWorld 
1

course avec classpath spécifié dans le répertoire courant :

java -cp . HelloWorld 
3

Vous avez une variable d'environnement %CLASSPATH% dans votre environnement. Débarrassez-vous, il dérange vos commandes java, c'est une mauvaise pratique enseignée par Sun Oracle de toute façon. Une fois que vous utilisez l'argument -classpath ou sa raccourci -cp, le %CLASSPATH% sera remplacé. Si le chemin de classe n'est spécifié ni par la variable d'environnement ni par les arguments, le chemin actuel sera pris par défaut (comme vous l'aviez initialement prévu).