web-dev-qa-db-fra.com

Quel est le problème avec ma configuration de fourmi?

J'ai installé Ant sur une machine Fedora 5 en utilisant yum, mais Ant ne se lance pas. Je reçois ce message d'erreur:

[bash]# ant
Exception in thread "main" Java.lang.NoClassDefFoundError: org/Apache/tools/ant/launch/Launcher
Caused by: Java.lang.ClassNotFoundException: org.Apache.tools.ant.launch.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.Apache.tools.ant.launch.Launcher.  Program will exit.

J'ai défini les variables d'environnement suivantes:

Java_HOME = /usr/Java/latest
ANT_HOME = /usr/bin

Ant est installé à /usr/bin/ant.

J'ai aussi rencontré ce post , et il semble que la variable JAVAVER_LIBDIR ne pointe pas vers quelque chose qui existe. Je mets un lien symbolique, comme le suggère le message, éclaircit le problème pour l'auteur, mais cela ne règle pas le problème.

[bash]# Sudo ln -s /usr/share/Java /usr/share/Java-1.6.0

Edit: J'ai également défini un lien symbolique qui résolvait un problème similaire avec la variable JAVAVER_JNIDIR:

[bash]# Sudo ln -s /usr/lib/Java /usr/lib/Java-1.6.0

Je reçois maintenant un message d'erreur différent:

[bash]# ant --execdebug
/usr/bin/build-classpath: error: Could not find jaxp_parser_impl Java extension for this JVM
/usr/bin/build-classpath: error: Could not find xml-commons-apis Java extension for this JVM
/usr/bin/build-classpath: error: Some specified jars were not found
exec "/usr/Java/latest/bin/Java" -classpath "/usr/share/Java-1.6.0/ant.jar:/usr/share/Java-1.6.0/ant-launcher.jar:/usr/Java/latest/lib/tools.jar" -Dant.home="/usr" -Dant.library.dir="/usr/lib" org.Apache.tools.ant.launch.Launcher -cp ""
Buildfile: build.xml does not exist!
Build failed

Off à Google ces messages d'erreur ...

30
Scottie T

Je viens de rencontrer un problème similaire sur Fedora 18.

Pour faire la longue histoire courte, exécutez:

Sudo mkdir /usr/lib/Java-1.7.0 /usr/share/Java-1.7.0

Apparemment, ce problème est spécifique à Java-1.7.0-openjdk car des répertoires empty similaires pour toutes les autres versions de JDK existaient.


DÉTAILS

Une erreur d'une seule ligne s'est produite après l'exécution de ant:

Error: Could not find or load main class org.Apache.tools.ant.launch.Launcher

Le problème se trouvait quelque part dans le script /usr/share/Java-utils/Java-functions qui tentait de définir les variables JAVAVER_JNIDIR/JAVAVER_LIBDIR pour faire référence aux répertoires ci-dessus. En raison d'une redirection inappropriée du message d'erreur vers stdout, certaines variables ont reçu des affectations telles que:

LOCALCLASSPATH='/usr/bin/build-classpath: error: JAVAVER_JNIDIR /usr/lib/Java-1.7.0 does not exist or is not a directory'

La création des répertoires conformément à la convention définie par toutes les autres versions de Java est la solution la plus propre.

26
uvsmtid
Sudo mkdir /usr/lib/Java-1.7.0 /usr/share/Java-1.7.0

J'ai installé Sun Java 1.7.x en téléchargeant le fichier tar et en le plaçant dans/opt. Parce que je n'ai pas fait une installation yum, ces répertoires n'ont pas été créés. Mon Java_HOME est défini sur:

$ echo $Java_HOME/
/opt/jdk1.7.0_03/

Comme quelqu'un d'autre l'a dit, exécuter ce qui suit a fourni un débogage très utile:

ant --execdebug
13
user2232387

Je pense que ANT_HOME devrait être défini avec '/ usr/bin/ant'. J'ai cette configuration (CENTOS 5). 

Mon script sh sous '/etc/profile.d' a cette conf .:

export Java_HOME="/usr/local/Java";
export ANT_HOME="/usr/local/ant";

J'espère que ça t'aide.

11
Aito

J'ai eu un problème similaire mais ce qui suit l'a résolu pour moi:

Sudo yum install xml-commons-apis
6
dkinzer

J'ai eu le même message d'erreur aujourd'hui, mais déclenché par une cause différente.

Dans mon cas, après avoir mis à jour OpenJDK 1.8.0, je ne pouvais plus exécuter ant.

Le problème résidait dans le fait que le résultat de la commande Java -fullversion avait légèrement changé et que le /usr/share/Java-utils/Java-functions ne le comprenait plus correctement.

La mise à niveau vers la dernière version du __PMjpackage-utils l'a résolu pour moi.

4
harmic

J'ai eu un tel problème sur Fedora 16 mais dans mon cas, les paquets xerces et xml-commons-apis étaient ok. En fait, --execdebug est très utile et indique que ant ne peut pas trouver un répertoire à /usr/lib/jvm-exports/YOUR_JDK. Cela est dû au fait que je suis passé d’Openjdk à Oracle jdk et que le répertoire de l’ancienne version de jdk (/usr/lib/jvm-exports/Java-1.6.0-openjdk-1.6.0.0) y est resté, mais il n’y avait pas celui de ma version actuelle (/usr/lib/jvm-exports/jdk1.6.0_32). Ces répertoires n'incluent que des liens symboliques qui pointent vers des bocaux de jre en particulier. J'ai donc suivi les étapes suivantes: 

  1. créer un nouveau répertoire pour la version actuelle de jdk (jdk1.6.0_32)
  2. copier tous les liens du répertoire openjdk dans le nouveau répertoire 
    # cp -av Java-1.6.0-openjdk-1.6.0.0.x86_64/* jdk1.6.0_32/
  3. corrigez-les tous pour qu'ils pointent sur les bocaux d'Oracle, exemple: 
    # cd /usr/lib/jvm-exports/jdk1.6.0_32
    # ln -s -f $Java_HOME/jre/lib/rt.jar jaas-1.6.0.0.jar

De toute évidence, $Java_HOME est défini correctement (sur la nouvelle version de jdk) . Il a résolu mon problème et peut constituer une autre cause, à l’exception des causes susmentionnées.

3
Maciej Bielski

Essayez d'installer xerces-j2-xml-apis

2
Hidayath

Dans mon cas, je définissais ma variable ANT_HOME, mais j'avais /bin/ ajouté pour pouvoir être utilisé dans le chemin système - cette variable de base ne devrait pas être le répertoire binaire, utilisez ce qui suit pour définir un antime, et ajouter le répertoire binaire au chemin env. .

export ANT_HOME=/opt/Apache-ant-1.9.4
export PATH=$ANT_HOME/bin:$PATH
2
Matt Clark

J'avais exactement le même message d'erreur sous OS X, mais quelqu'un a suggéré de désactiver ANT_HOME et cela a fonctionné. https://github.com/Homebrew/homebrew/issues/32851

1
AndyB

J'ai eu le même problème sur Suse, SLES 11. La réponse de Hidayath https://stackoverflow.com/a/4849302/1211900 l'a résolu. Supposant des référentiels de paquets prêts à l'emploi: me @ sles: ~> Sudo zypper installer xerces-j2-xml-apis

1
Jason Stirnaman

Dans mon cas, le dossier 'lib' contenant tous les fichiers jar, y compris 

ant-launcher.jar

était sous 

/usr/local/Cellar/ant/1.9.6/libexec/ 

J'ai copié le dossier lib sous 

/usr/local/Cellar/ant/1.9.6/

parce qu'après avoir exécuté 'ant --execdebug', j'ai trouvé que les commandes ant recherchaient le dossier 'lib' sous le dossier '1.9.6'.

après ce changement, les commandes de fourmis ont commencé à bien fonctionner.

0
Jlearner