Al intentar ejecutar mi proyecto como un WebApplication desde Eclipse, tengo el siguiente error:NoClassDefFoundError: GuiceServletContextListener cuando se ejecuta GWT + GAE desde Eclipse
[WARN] failed [email protected]3fd{/,D:\Dev\Projects\The Five Orbs\trunk\target\fiveorbs-0.1}: java.lang.NoClassDefFoundError: com/google/inject/servlet/GuiceServletContextListener
[WARN] failed [email protected]: java.lang.NoClassDefFoundError: com/google/inject/servlet/GuiceServletContextListener
[WARN] Error starting handlers
java.lang.NoClassDefFoundError: com/google/inject/servlet/GuiceServletContextListener
La clase se puede encontrar en tiempo de compilación, aunque (mi costumbre GuiceServletConfig extiende GuiceServletContextListener y se compila correctamente).
La biblioteca guice-servlet-3.0.jar
aparece tanto en la ruta de compilación del proyecto como en la ruta de clase de la configuración de ejecución de la aplicación web en Eclipse.
Los Argumentos Panel de mi configuración de ejecución tiene la siguiente configuración: en argumentos de programa:
-remoteUI "${gwt_remote_ui_server_port}:${unique_id}" -startupUrl TheFiveOrbs.jsp -logLevel INFO -server com.google.appengine.tools.development.gwt.AppEngineLauncher -port 8888 -codeServerPort 9997 -war "D:\Dev\Projects\The Five Orbs\trunk\target\fiveorbs-0.1" com.fiveorbs.TheFiveOrbs
en argumentos de VM:
-javaagent:D:\Dev\Programs\appengine-java-sdk\lib\agent\appengine-agent.jar -Xmx512m -Dappengine.sdk.root=D:\Dev\Programs\appengine-java-sdk
cuando corro mvn gae: plazo desde el símbolo del sistema con Maven, todo está bien, el servidor se inicia correctamente y no se muestra ninguna excepción.
He estado luchando con este problema durante un par de horas, y realmente no puedo entender por qué ocurre.
Gracias de antemano por cualquier sugerencia que pueda ofrecer.
Sébastien
De hecho, esto resuelve el error. ¡Muchas gracias! –
¿Cómo lo logras? Tengo 'guice-servlet-3.0.jar' en mi classpath como una dependencia de Maven, por lo que no entrará en' WEB-INF/lib' dentro de Eclipse; Solo las dependencias GAE SDK sí. Tengo mi directorio WAR configurado en 'src/main/webapp' (allí está el' WEB-INF/'), y no quiero ejecutar mi aplicación desde' target/'de Maven, ya que eso requiere ejecutar 'mvn package' primero. – derabbink
Y, sin embargo, ¡así es como funciona Maven! (hasta que el plugin gwt-maven sea de alguna manera _fixed_). Honestamente, solo necesitas ejecutar el paquete 'mvn -Dgwt.compiler.skip' cuando cambias tus dependencias, lo cual no es tan frecuente. Una alternativa es no usar el servidor incorporado y usar 'mvn appengine: devserver' (o' mvn embarcadero: ejecutar' o 'mvn tomcat7: ejecutar' cuando no se usa GAE) junto con ejecutar el GWT DevMode en''servidor 'modo. –