Groovlet + Tomcat: "no se puede resolver la clase" al importar bibliotecas

votos
1

Tengo problemas para ejecutar un servlet maravilloso (groovlet) en tomcat que importa una clase de biblioteca. Cuando no importo nada, el groovlet funciona correctamente, pero si importo algo que espero que esté en el classpath (puedo importar la misma clase con éxito en un servlet normal), veo el siguiente error:

groovy.util.ScriptException: Could not parse scriptName: /MyGroovlet.groovy
java.lang.RuntimeException: groovy.util.ScriptException: Could not parse scriptName: /MyGroovlet.groovy
    at groovy.servlet.GroovyServlet$1.call(GroovyServlet.java:123)
...
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, /MyGroovlet.groovy: 1: unable to resolve class com.mycompany.mypackage.MyLibraryClass
 @ line 1, column 1.

El contenedor MyLibraryClassque contiene está en shared/lib, que es cargado por tomcat mediante lo siguiente en catalina.properties:

shared.loader=...,${catalina.base}/shared/lib/*.jar,...

Mis groovlets están mapeados como se describe en la guía del usuario en mi aplicación web.xml:

<servlet>
    <servlet-name>GroovyServlet</servlet-name>
    <servlet-class>groovy.servlet.GroovyServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>GroovyServlet</servlet-name>
    <url-pattern>*.groovy</url-pattern>
</servlet-mapping>

Y aquí está el código para Groovlet MyGroovlet.groovy:

import com.mycompany.mypackage.MyLibraryClass
MyLibraryClass.someStaticMethod()

Mi groovlet está implementado en WEB-INF/groovy/MyGroovlet.groovy, por la API de GroovyServlet .

Cuando visito http://localhost:8080/myapplication/MyGroovlet.groovy, el error descrito anteriormente se escribe en los registros de mi aplicación.

¿Hay alguna forma de que deba declarar explícitamente el classpath en tiempo de ejecución para GroovyServlet? Intenté mover el contenedor de la biblioteca a varios lugares, incluido WEB-INF/liby moviendo el MyLibraryClass.classarchivo real WEB-INF/classes, pero sin suerte.

Publicado el 10/12/2008 a las 00:00
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
1

Estoy usando el complemento Groovy para Eclipse. La exportación de Groovlets en un archivo war también funciona.

Cuando exporto mi aplicación basada en Groovlet, este plugin útil pone los archivos .groovy en el directorio / WEB-INF / classes (en el classpath). Y funciona cuando despliegue el archivo war en mi servidor Tomcat.

Espero que esto ayude

Saludos.

Respondida el 25/02/2009 a las 02:50
fuente por usuario

votos
0

Un error estúpido que hice fue que necesitaba para recargar la aplicación web antes de que el frasco copié en WEB-INF / lib sería cargado (es decir, ya sea reiniciar todo el servidor Tomcat, o volver a cargar sólo la aplicación específica del gestor de Tomcat). la edición de los archivos de forma dinámica .groovy justo dentro del Tomcat / webapps / dir y ver los cambios a las páginas de inmediato me deje llevar por la sensación de que todo iba a ser auto-cargado, pero no así con los tarros. Era enloquecedor hasta que me di cuenta de lo que estaba pasando.

Respondida el 30/04/2010 a las 06:34
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more