J'essaie d'exécuter une tâche Java à partir de la fourmi. J'essaie de courir la classe "org.apache.tools.ant.launch.launcher". Je continue à obtenir le "NoclassDeffondonError" sans aucun nom de classe spécifié. Je reçois aussi une "classe de classeNotFoundException" avec cet affichage d'un message "Impossible de trouver la classe principale :. Le programme va sortir". Voici un extrait de l'erreur maintenant, j'essaie d'exécuter une classe d'ant à partir d'un pot d'ant et que je spécifie la classe de classe où ce fichier de classe réside à l'aide de l'attribut "ClassePathref", mais je reste toujours Obtenez ce message. J'ai vérifié le pot d'ant pour vérifier le manifeste et la classe "principale" est spécifiée correctement (c'est "org.apache.tools.ant.launch.launcher"). J'ai épuisé toutes mes ressources. S'il vous plaît aider! ! ! P> PS: mon environnement est Eclipse sur Ubuntu 9.04 P> p>
8 Réponses :
à partir de cette ligne: Il semble que votre appel à Java.exe trouve un . code> où il s'attend à un nom de classe. Peut-être essayez-vous d'indiquer le point de classe sur la ligne de commande, mais négligeez-vous de préférer cela avec le
-cp code> ou
-classpath code> drapeau. P> p>
voici ce que j'ai dans build.xml
@Freder. Peut-être devriez-vous montrer comment WebTest.lib code> est défini.
Cela peut être une erreur trompeuse qui ne concerne pas réellement une classe manquante de la classe de classe. Si vous utilisez Tomcat, il peut être dû à des fichiers conforés manquants en $ catalina_base / conf p>
Il pourrait également s'agir d'une installation de fourmis mal configurée, veuillez vérifier vos variables Java_Home et Ant_Home env ou essayez une autre installation de fourmi. P>
Très probablement votre classpath est mal configuré. p>
Au minimum, le CLASSPATH doit inclure: p>
(à partir de la ant manuel) p>
vous semblent également relançant ant dans le répertoire courant (l'exécution de la même build.xml). Peut-être que vous voulez définir la propriété « dir ». p>
Ant Launcher s'attend à ce que les params suivants
<java classname="org.apache.tools.ant.launch.Launcher" fork="true" failonerror="true" dir="${sub.builddir}" timeout="4000000" taskname="startAnt" > <classpath> <pathelement location="${ant.home}/lib/ant-launcher.jar"/> </classpath> <arg value="-buildfile"/> <arg file="${sub.buildfile}"/> <arg value="-Dthis=this"/> <arg value="-Dthat=that"/> <arg value="-Dbasedir=${sub.builddir}"/> <arg value="-Dthe.other=the.other"/> <arg value="${sub.target}"/> </java>
On dirait que la tâche des fourmis tente d'exécuter Java, mais passe en quelque sorte une chaîne vide à la JVM comme nom de la classe à exécuter. Je peux obtenir la même stacktrace si j'exécute le jvm directement avec une chaîne vide citée: (ceci est sous Windows, mais je ne pense pas que cela fait une grande différence.) < / p> Je ne peux que suggérer la suite du commentaire d'Alexander Pogrebnyak à la réponse d'AKF. Peut-être que la propriété Aussi, est-il une bonne raison pour appeler webTest.lib code> a des espaces entre espaces? P>
ant code> directement via Java, plutôt que d'utiliser le Tâche << p> p>
En cas de doute, invoquez Ant -v et regardez toutes vos déclarations variables et toute votre ligne de commande envoyée à Java. P>
Certaines quantités de type chemin sont évaluées avec impatience, tandis que d'autres sont évaluées paresseusement. J'ai eu beaucoup de problèmes où j'ai utilisé l'un des premiers, lorsque mon script de fourmis avait l'intention de créer un pot qui serait utilisé par une tâche ultérieure. Puis au moment où j'ai invoqué l'appel, il avait déjà élagué mon pot de la classe de classe. P>
Si je devais faire une devin sauvage, je parierais que votre ligne de commande a regardé quelque chose comme: p>
Java ... -ClassPath org.apache.tools.ant.launch.launcher P>
au lieu de p>
Java ... -ClassPath foo.jar; bar.jar org.apache.tools.ant.launch.launcher p>
Comme vous attendez p>
https://blogs.oracle.com/sreekantth/enterry/java_lang_noclassdeffondantRor_org_codehaus XXX PRE>
Récemment, lorsque j'essaie d'exécuter des scripts maven, je reçois cette exception: P>
Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/plexus/classworlds/launcher/Launcher Caused by: java.lang.ClassNotFoundException: org.codehaus.plexus.classworlds.launcher.Launcher at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Could not find the main class: org.codehaus.plexus.classworlds.launcher.Launcher. Program will exit.
J'ai eu un problème similaire récemment. Les coupables étaient 2 étiquettes sous la tâche Java, qui n'ont pas eu leurs valeurs définies. Ils ont donc entraîné 2 arguments de commande vides et à la fin de 2 espaces de la ligne de commande. Pour une raison quelconque, UNIX ne le gère pas correctement. Red Hat 5 et Ubuntu affichaient la même erreur. C'était OK sur Windows 7. Fixer ces arguments pour avoir des valeurs factices défaillantes résolvées le problème. P>