2010-11-20 5 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).

Questions connexes