2010-02-05 8 views
13

Tengo un Eclipse con Google App Engine Plugin y Google App Engine SDK 1.3.0 instalado en. He creado un nuevo proyecto web con Google App Engine SDK 1.3.0. Ahora, deseo agregar una biblioteca para cierta sintaxis JSTL avanzada en el archivo jsp, es EL-functors (http://el-functors.sourceforge.net). Para que EL-funtores a recogida su sintaxis avanzada en el archivo JSP y los compila a la sintaxis JSP estándar, debo añadir algo de oyente a la web.xml:No se pueden usar las bibliotecas externas para el proyecto de Java del motor de la aplicación de Google

<listener> 
    <listener-class>beanface.el.functor.InstallFunctorListener</listener-class> 
</listener> 

standar.jar Además, he añadido, jstl.jar, el-functors-1.0.3.jar a mi ruta de compilación. Sin embargo, cuando me quito servidor web (utilizando Depurar como> Proyecto Web), en el registro de la consola, veo este mensaje de error:

Initializing AppEngine server 
Feb 5, 2010 7:22:45 AM com.google.apphosting.utils.jetty.JettyLogger warn 
WARNING: Could not instantiate listener beanface.el.functor.InstallFunctorListener 
java.lang.ClassNotFoundException: beanface.el.functor.InstallFunctorListener 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at ........ 
    at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:421) 
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1035) 
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:783) 
    at com.google.gwt.dev.DevMode.main(DevMode.java:275) 

supongo que debe haber algunas causas conducen a la biblioteca no se carga . Cuando llego a la guerra/WEB-INF/lib, no puedo ver standard.jar, jstl.jar y el-functors.1.0.3.jar aquí; solo los archivos jar del motor de la aplicación google se implementan.

¿Cuál es el problema allí, cómo puedo solucionarlo?

Respuesta

24

tiene que copiar el frasco (s) requerida para la carpeta lib/WEB-INF/manualmente.

Me enfrenté a un problema similar al comenzar a construir con el motor de la aplicación. Después de algunas investigaciones, llegué a la conclusión de que es la única forma de hacerlo funcionar.

gustaría saber si estoy equivocado :)

+1

Sí, esto funciona. Pero en realidad: ¿es la forma * ÚNICA * de hacerlo funcionar? Sin compilación de estilo Eclipse gestión de rutas? war/WEB-INF/lib es * soooo * primitive! –

+0

Esto también funciona para mí, pero me gustaría saber el motivo por el que tenemos que poner el contenedor en WEB-INF/lib incluso si ya lo hemos hecho el archivo de clase en classpath? tal vez el modo dev de gwt solo honre la clase/jar en WEB-INF ? – Mike

+0

Funciona para mí también. (Biblioteca de GSON) – ehsun7b

1

estoy usando la herramienta Aplicación Llave para copiar automáticamente en frascos/WEB-INF/lib. Funciona solo si no tiene ninguna clase marcada por @Entity en ese jar.

5

Existe una alternativa fácil de usar para el afrontamiento manual de los frascos - Corrección rápida

Ir a marcadores View, encontrar advertencia adecuada (La entrada siguiente ruta de clases" ...), seleccione 'solución rápida' en el contexto menú y haga clic en "copiar ... en/WEB-INF/lib y actualizar classpath para hacer referencia a este jar"

+0

esto funciona muy bien para mí, gracias! – arty

Cuestiones relacionadas