Apache Lenya es un administrador de contenidos desarrollado íntegramente en Java que basa su funcionamiento sobre Apache Cocoon, un framework para el manejo de procesos en serie de documentos XML.
El problema descrito a continuación no es exclusivo de Lenya, sino que puede aparecer al utilizar Ant en otros escenarios. Sin embargo presentamos el caso puntual ocurrido de modo de tener una referencia de este y su rápida solución.
Como referencia, el problema se originó trabajando sobre Linux, específicamente Fedora Core 5.
Varias de las operaciones de Lenya se basan en la ejecución de targets de Ant para, por ejemplo, copiar una publicación al directorio de Lenya sobre, por ejemplo, Tomcat, o desde el punto de partida para compilar la aplicación.
La configuración de los targets de Ant de Lenya está armada en base a múltiples archivos, algunos de los cuales hacen referencia a clases compiladas de Cocoon, que normalmente se encontrará en otra carpeta.
En una situación en particular encontramos que al ejecutar el siguiente comando:
./build.sh install-pub
para copiar una publicación nueva a Tomcat-JBoss, obteníamos la siguiente salida:
Buildfile: build.xml init: ------------------- Apache Lenya 1.2.5 [1999-2005] ---------------- Building with Apache Ant version 1.6.5 compiled on March 6 2006 Using build file /root/apache-lenya-1.2.5-src/build.xml prepare-cocoon: Copying 5 files to /root/apache-lenya-1.2.5-src/build/lenya/webapp BUILD FAILED /root/apache-lenya-1.2.5-src/src/targets/init-build.xml:82: taskdef A class needed by class XConfToolTask cannot be found: XConfToolTask Total time: 10 seconds
Al revisar las definiciones de los targets Ant encontramos que todo se encontraba en orden. Intentamos fijar en duro la ruta a la clase no encontrada (que sí existía dentro de Cocoon), sin éxito.
Causa
El problema se originó por utilizar el intérprete Java gij que normalmente se encuentra disponible en los sistemas Linux. Por diferencias de versiones/forma de encontrar librerías se produjo el error.
Solución
Se debe utilizar un JRE o JDK actualizado para evitar el problema. En nuestro caso particular seteamos la variable de entorno JAVA_HOME a la ruta de un JDK instalado y pudimos pasar del punto del error.
Una forma rápida de hacer esto (pero que sólo sirve durante la sesión actual) es:
- con bash:
export JAVA_HOME=[ubicacion-JDK]
- con tcsh:
setenv JAVA_HOME [ubicacion-JDK]