2010-02-25 7 views
30

Instalé Ant en una máquina Fedora 5 usando yum, pero Ant no se inicia. Me sale este mensaje de error:¿Qué está mal con mi configuración de hormigas?

[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. 

he puesto las siguientes variables de entorno:

JAVA_HOME = /usr/java/latest 
ANT_HOME = /usr/bin 

hormiga se instala en /usr/bin/ant.

También he encontrado this post, y parece que la variable JAVAVER_LIBDIR no apunta a algo que existe. Establecí un enlace simbólico, como la publicación sugiere aclarar el problema para el autor, pero no me solucionó las cosas.

[bash]# sudo ln -s /usr/share/java /usr/share/java-1.6.0 

Editar: También he creado un enlace simbólico que se dirigió a un problema similar con el JAVAVER_JNIDIR variables:

[bash]# sudo ln -s /usr/lib/java /usr/lib/java-1.6.0 

ahora me sale un mensaje de error diferente:

[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 

Salir a Google estos mensajes de error ...

Respuesta

11

Creo que ANT_HOME debe establecerse con '/ usr/bin/ant'. Tengo esa configuración (CENTOS 5).

Mi script sh en '/etc/profile.d' tiene esta conf .:

export JAVA_HOME="/usr/local/java"; 
export ANT_HOME="/usr/local/ant"; 

espero que le ayuda.

+0

Eso fue parte del problema. Gracias. Todavía no he arreglado totalmente todo, pero esto me ayudó en el camino. –

2

intente instalar xerces-j2-xml-apis

+0

Esto resolvió la extensión 'No se pudo encontrar xml-commons-apis Java para este error de JVM' que obtuve usando' ant' y JDK 8 en SLES 11 SP4. – jaume

6

que tenía un problema similar, pero la siguiente fijada por mí:

sudo yum install xml-commons-apis 
1

que tenían el mismo problema en Suse, la respuesta de SLES 11. Hidayath https://stackoverflow.com/a/4849302/1211900 resuelto. Suponiendo que fuera de la caja de depósitos de paquetes: mí @ SLES: ~> sudo zypper instalar Xerces-J2-XML-API

3

que tenía ese problema en Fedora 16, pero en mis paquetes caso xerces y xml-commons-apis estaba bien . En realidad, --execdebug es muy útil e imprimió que la hormiga no puede encontrar un directorio en /usr/lib/jvm-exports/YOUR_JDK. Esto fue porque cambié de openjdk a jdk de Oracle y el directorio de la versión anterior de jdk (/usr/lib/jvm-exports/java-1.6.0-openjdk-1.6.0.0) salió de allí, pero no era el de mi versión actual (/usr/lib/jvm-exports/jdk1.6.0_32).Estos directorios incluye solamente un montón de enlaces blandos que apuntan a los tarros en particular de JRE por lo que he tomado siguientes pasos:

  1. crear un nuevo directorio para la versión actual de JDK (jdk1.6.0_32)
  2. copia todos los enlaces de la década de OpenJDK directorio para el nuevo directorio
    # cp -av java-1.6.0-openjdk-1.6.0.0.x86_64/* jdk1.6.0_32/
  3. correcta todos ellos con el fin de que se están apuntando en frascos de Oracle, ejemplo:
    # cd /usr/lib/jvm-exports/jdk1.6.0_32
    # ln -s -f $JAVA_HOME/jre/lib/rt.jar jaas-1.6.0.0.jar

Obviamente, $JAVA_HOME está configurado correctamente (en la nueva versión jdk). Resolvió mi problema y puede ser otra causa a excepción de las causas mencionadas anteriormente.

26

que acabas de conocer problema similar en Fedora 18.

Para hacer el cuento largo, ejecute:

sudo mkdir /usr/lib/java-1.7.0 /usr/share/java-1.7.0 

Al parecer, este problema es específico de java-1.7.0-openjdk debido similares vacías directorios para todos otras versiones de JDK existieron.


DETALLES

No fue un error de una sola línea después de ejecutar ant:

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

El problema estaba en algún lugar /usr/share/java-utils/java-functions escritura dirigido a adoptar JAVAVER_JNIDIR/JAVAVER_LIBDIR variables para referirse a la directorios arriba. Debido a la inadecuada mensaje de error de redirección a la salida estándar, algunas variables consiguieron tareas como:

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

Creación de los directorios de acuerdo con la convención establecida por todas las demás versiones Java es la solución más limpia.

+3

¡Gracias! encontrado usando '--execdebug', el mismo problema ocurrió conmigo,' classpath' no se configuró correctamente. –

+3

Muchas gracias. ¡Esto también me estaba volviendo loco con java-1.8.0! –

+0

Esta solución me ayudó a solucionar el mismo problema en una caja Suse SLES11: las pathes eran ligeramente diferentes. ¡Yay para 'ant --execdebug'! – zb226

13
sudo mkdir /usr/lib/java-1.7.0 /usr/share/java-1.7.0 

Instalé sun java 1.7.x descargando el archivo tar y colocándolo en/opt. Como no hice una instalación yum estos directorios no fueron creados. Mi JAVA_HOME se establece en:

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

Como alguien dijo, ejecutando el siguiente provisto de depuración muy útil:

ant --execdebug 
2

En mi caso, yo estaba poniendo mi variable de ANT_HOME, pero había /bin/ anexa para su uso en la ruta del sistema: esta variable de inicio no debe ser el directorio binario, utilice lo siguiente para establecer un hime de hormiga y agregar el directorio binario a la ruta de env.

export ANT_HOME=/opt/apache-ant-1.9.4 
export PATH=$ANT_HOME/bin:$PATH 
+0

@Downvoter, por favor explique? –

4

Tuve el mismo mensaje de error hoy, pero desencadenado por una causa diferente.

En mi caso, después de actualizar a OpenJDK 1.8.0, ya no podía ejecutar hormiga.

El problema radicaba en el hecho de que la salida del comando java -fullversion había cambiado ligeramente, y el /usr/share/java-utils/java-functions ya no lo entendía correctamente.

Actualizando a la última versión del jpackage-utils RPM lo resolvió para mí.

0

En mi caso 'lib' carpeta que tiene todos los frascos incluidos

ant-launcher.jar 

estaba bajo

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

copié la carpeta lib bajo

/usr/local/Cellar/ant/1.9.6/ 

porque después de correr 'hormiga - -execdebug 'encontré comandos de hormiga que están buscando la carpeta' lib 'en la carpeta' 1.9.6 '.

después de eso, los comandos de change ant comenzaron a funcionar bien.

Cuestiones relacionadas