NoClassDefFoundError sans aucun nom de classe
Je suis en train de lancer un java tâche ant. Je suis en train de lancer le "org.apache.outils.ant.de lancement.Lanceur" de la classe. J'obtiens toujours le "NoClassDefFoundError", sans nom de classe spécifié. Je suis aussi une "ClassNotFoundException" ainsi que l'affichage d'un message "could not find the main class: . Programme de sortie". Voici un extrait de l'erreur
[java] Exception in thread "main" java.lang.NoClassDefFoundError:
[java] Caused by: java.lang.ClassNotFoundException:
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
[java] at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
[java] Could not find the main class: . Program will exit.
[java] Java Result: 1
Maintenant, je suis en train de lancer une fourmi classe à partir d'une fourmi pot et je spécifier le chemin où cette classe réside le fichier à l'aide de la "classpathref" attribut, cependant, je reçois toujours ce message. J'ai vérifié la fourmi pot de vérifier le Manifeste et la classe "main" est spécifié correctement (c'est "org.apache.outils.ant.de lancement.Lanceur") . J'ai épuisé toutes mes ressources. S'il vous plaît aider ! ! !
ps: Mon environnement Eclipse sur Ubuntu 9.04
source d'informationauteur Seagull
Vous devez vous connecter pour publier un commentaire.
Plus probable que votre classe est mal configuré.
Au minimum le chemin de la classe devrait inclure:
(à partir de la ant manuel)
Également vous semble être la relance de l'ant dans le répertoire courant (l'exécution de la même build.xml). Peut-être que vous souhaitez définir la "dir" de la propriété.
Il ressemble à la tâche Ant essaie de Java, mais est en quelque sorte de passer une chaîne vide à la JVM que le nom de la classe à exécuter. Je peux obtenir la même stacktrace si je lance la JVM directement avec une cité une chaîne vide:
(C'est sur Windows, mais je ne pense pas que cela fait beaucoup de différence.)
Je ne peux que suggérer le suivi Alexander Pogrebniak commentaire akf de réponse. Peut-être le
webtest.lib
propriété des espaces?Aussi, est-il une bonne raison pour appeler
ant
directement via java, plutôt que d'utiliser le ant tâche?https://blogs.oracle.com/sreekanth/entry/java_lang_noclassdeffounderror_org_codehaus
Récemment, lorsque j'essaie d'exécuter Maven scripts, je reçois cette exception:
Après avoir passé quelque temps à essayer différentes combinaisons , j'ai trouvé que c'est parce que j'ai à la fois M2_HOME et M3_HOME mis dans mes variables d'environnement.Une fois que j'ai enlevé M2_HOME de mes variables d'environnement, j'ai pu obtenir ce travail de retour à nouveau.Peut-être cela peut vous sauver un peu de temps sérieusement pour certains.
Cela peut être une erreur trompeur qui n'est effectivement pas à propos d'une classe manquant dans le classpath. Si vous utilisez Tomcat il peut être dues à l'absence de fichiers de conf dans $CATALINA_BASE/conf
Il pourrait aussi être un problème de configuration ant de l'installation, veuillez vérifier votre JAVA_HOME et des variables d'environnement ANT_HOME ou essayez une autre installation de ant.
Ant lanceur attend la suite params
J'ai peur que nous ne pouvons pas continuer de répondre à vous si vous ne collez pas l'ensemble de votre build.xml fichier.
Juste essayer de donner un exemple comme ci-dessous:
Ce serait extrêmement utile pour vous fournir un malentendu possible.
Espère que cette aide,
Ernani
À partir de cette ligne:
il semble que votre appel à l'java.exe est de trouver un
.
où il attend un nom de classe. Vous êtes peut-être en essayant d'indiquer le chemin de la classe sur la ligne de commande, mais néglige de préface qu'avec le-cp
ou-classpath
drapeau.En cas de doute, appeler ant -v et de regarder toutes vos déclarations de variables, et l'ensemble de la ligne de commande envoyé à Java.
Certain chemin, comme les quantités sont très évalués, tandis que d'autres sont paresseusement évalué. J'ai eu beaucoup de problèmes là où j'ai utilisé l'un des anciens, quand mon script Ant pour but de créer un jar qui pourraient être utilisés par un plus tard de la tâche. Ensuite, par le temps que j'ai invoqué l'appel, il avait déjà taillé mon pot depuis le classpath.
Si je devais faire une je devine, je serais prêt à parier votre ligne de commande cherché quelque chose comme:
java ... -classpath org.apache.outils.ant.de lancement.Lanceur
au lieu de
java ... -classpath foo.jar;bar.jar org.apache.outils.ant.de lancement.Lanceur
comme prévu
J'ai eu un problème similaire récemment. Les coupables ont été 2 tags en vertu de la java de la tâche, qui n'ont pas leurs valeurs, si elles ont donné lieu à 2 vide arguments de la commande et à la fin, en 2 espaces dans la ligne de commande.
Pour une raison quelconque Unix ne la manipule pas droit. Red Hat 5 et Ubuntu affiche le même message d'erreur. C'était OK sur Windows 7.
La définition de ces arguments ont par défaut des valeurs factices résolu le problème.