J'essaie d'apprendre à exécuter des applications Java à partir de la ligne de commande Windows et je n'arrive pas à résoudre un problème.NoClassDeffFoundError lors de l'exécution de java.exe à partir d'un répertoire différent de celui des fichiers .class
J'ai une classe simple sur mon bureau:
public class Hello{
public static void main(String[] args){
System.out.println("1, two, three");
}
}
Si je lance javac
et java
commandes quand je suis dans mon répertoire de bureau dans tout ce cmd est bien, mais si je vais un répertoire de retour (donc Je ne serai pas dans le même répertoire que les fichiers .java et .class) alors mon répertoire cmd est C:\Users\Tomas
et mes fichiers Hello.java et Hello.class sont en C:\Users\Tomas\Desktop
. Je peux exécuter la commande javac Desktop\Hello.java
et cela fonctionne, mais si j'essaie de faire java Desktop\Hello.java
, j'obtiens un Exception in thread "main" java.lang.NoClassDefFoundError: Desktop\Hello (wrong name: Hello)
.
Je sais que NoClassDefFoundError est lancé quand une classe était disponible au moment de la compilation, mais ClassLoader ne peut pas le trouver pendant l'exécution (trouvé un bon article à ce sujet here). Je pense que le problème a quelque chose à voir avec la variable CLASSPATH, donc je l'ai mis à:
"C:\Program Files\Java\jdk1.7.0_21\jre\lib\ext";.;"C:\Program Files\Java\jdk1.7.0_21\jre\bin";"C:\Users\Tomas\Desktop"
(I inclus "C: \ Users \ Tomas \ Desktop" juste pour essayer tout) et moi avons essayé en cours d'exécution la commande "java" avec des options de -classpath et -CP:
java -classpath "C:\Program Files\Java\jdk1.7.0_21\jre\lib\ext";.;"C:\Program Files\Java\jdk1.7.0_21\jre\bin";"C:\Users\Tomas\Desktop" Desktop\Hello
et je continue à obtenir la même exception. Je serais ravi si quelqu'un pouvait expliquer mon erreur et pourquoi cela se produisait, et peut-être même indiquer quelques directions pour en savoir plus à ce sujet.
Merci.
Lorsque vous l'avez exporté, en avez-vous fait un pot exécutable? – KeirDavis
Je viens de l'écrire avec le bloc-notes et essayer de l'exécuter à partir de l'invite de commande – Tomas
Tomas, Essayez et obtenez un IDE. Eclipse.org en a. Ils aident dans la tâche de faire Jars et syntaxe de codage =) J'espère que cela aide :) – KeirDavis