2012-09-06 8 views
6

Recientemente traté de crear un nuevo proyecto gwt/gae usando el complemento de eclipse de Google. He hecho esto en el pasado con éxito y tengo varios proyectos en desarrollo que no están teniendo problemas.excepción de puntero nulo para agregar nuevo google usando el complemento eclipse

Me estoy poniendo una NullPointerException cuando trato de iniciar la aplicación Web. Aquí está el rastro de la pila.

WARNING: EXCEPTION 
java.lang.ClassNotFoundException: com.google.api.server.spi.SystemServiceServlet 
    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:306) 
    at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at org.mortbay.util.Loader.loadClass(Loader.java:91) 
    at org.mortbay.util.Loader.loadClass(Loader.java:71) 
    at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:73) 
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685) 
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) 
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250) 
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) 
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
    at org.mortbay.jetty.Server.doStart(Server.java:224) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:196) 
    at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:239) 
    at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:146) 
    at com.google.appengine.tools.development.gwt.AppEngineLauncher.start(AppEngineLauncher.java:97) 
    at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509) 
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068) 
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811) 
    at com.google.gwt.dev.DevMode.main(DevMode.java:311) 
Sep 6, 2012 2:42:25 PM com.google.appengine.tools.development.ApiProxyLocalImpl log 
SEVERE: javax.servlet.ServletContext log: unavailable 
javax.servlet.UnavailableException: com.google.api.server.spi.SystemServiceServlet 
    at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:79) 
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685) 
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) 
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250) 
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) 
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
    at org.mortbay.jetty.Server.doStart(Server.java:224) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:196) 
    at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:239) 
    at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:146) 
    at com.google.appengine.tools.development.gwt.AppEngineLauncher.start(AppEngineLauncher.java:97) 
    at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509) 
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068) 
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811) 
    at com.google.gwt.dev.DevMode.main(DevMode.java:311) 

Sep 6, 2012 2:42:25 PM com.google.apphosting.utils.jetty.JettyLogger warn 
WARNING: failed SystemServiceServlet: java.lang.NullPointerException 
Sep 6, 2012 2:42:26 PM com.google.apphosting.utils.jetty.JettyLogger warn 
WARNING: Failed startup of context c[email protected]75e04ee8{/,/Users/bucky/Documents/workspace/Birthday/war} 
java.lang.NullPointerException 
    at java.lang.Class.isAssignableFrom(Native Method) 
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685) 
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) 
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250) 
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) 
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
    at org.mortbay.jetty.Server.doStart(Server.java:224) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:196) 
    at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:239) 
    at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:146) 
    at com.google.appengine.tools.development.gwt.AppEngineLauncher.start(AppEngineLauncher.java:97) 
    at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509) 
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068) 
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811) 
    at com.google.gwt.dev.DevMode.main(DevMode.java:311) 

No tengo idea de dónde ir para solucionar esto.

+0

estoy teniendo el mismo problema utilizando JDK 1.6 y el índigo Eclipse - De alguna manera me las arreglé para obtener el código de aplicación funcione una sola vez, mediante el despliegue a App Engine de Google. Eclipse luego compilaría sin ningún problema. Traté de replicar esto de nuevo, para proporcionar paso a paso, sin suerte y el error volvió. – TeckniX

+0

http://stackoverflow.com/questions/12060233/http-503-error-gwt-jetty-server-service-unavailable – kreker

Respuesta

0

Aunque esto puede no ser una solución adecuada, me las arreglé para conseguir que funcione en mi entorno:

  • actualizaciones de Eclipse para la última versión del añil (3.7.2)
  • desinstalar/instalar el Google herramientas de app Engine
  • Crear nuevo proyecto del siguiente tutorial (se puede comprobar en 'Generar código de ejemplo del proyecto') y que se sumarán todos los del mundo hola para usted

Run él y sh Sería bueno ir.

ps: por alguna razón mi Eclipse no está mostrando ninguna salida de depuración, pero el dev_appserver.sh no se queja más acerca de los errores.

+0

Como comentario lateral, descubrí por qué Eclipse no ejecutaría el mío ... no dejaba de quejarse falta el com.appengine.tools.development.DevAppServerMain - Resulta que, simplemente puede copiarlo en su directorio war/WEB-INF/lib/desde com.google.appengine.eclipse.sdkbundle_1.7.1/appengine-java-sdk- 1.7.1/lib/appengine-tools-api.jar - Después de eso todo funcionó sin problemas. – TeckniX

4

me hizo una nueva instalación de Eclipse Juno con el complemento de Google (GWT + GAE). Ahora me doy cuenta de que el plugin intenta constantemente modificar mi archivo web.xml.

Se trata de añadir esta definición servlet:

<servlet> 
    <servlet-name>SystemServiceServlet</servlet-name> 
    <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class> 
    <init-param> 
     <param-name>services</param-name> 
     <param-value/> 
    </init-param> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>SystemServiceServlet</servlet-name> 
    <url-pattern>/_ah/spi/*</url-pattern> 
    </servlet-mapping> 

no he sido capaz de encontrar la manera de evitar que suceda pero es realmente molesto porque tengo que estar constantemente revertir ese archivo para evitar la comprobación en esos cambios

Intente eliminar ese servlet de su archivo web.xml. No parece servir para ningún propósito. Puede tener que ver con Google Cloud

+0

¿La respuesta que está proponiendo aquí es eliminar el servlet de web.xml? Esto leyó un poco más como una pregunta que como una respuesta, poner su resumen primero podría haberlo aclarado un poco. –

+0

gracias Acabo de tener el mismo problema al migrar a SDK 1.7.3, de hecho modifica el web.xml al agregar ese SystemServiceServlet que rompe el servidor. Eliminarlo funciona. – doright

+1

Continuará modificando su web.xml cada vez que guarde un archivo en su proyecto. Para desactivarlo, abra la configuración de su proyecto en Eclipse, luego seleccione Constructores, luego desmarque la casilla "Notificador de cambio de proyecto de Google App Engine". – bpossolo

2

Esto me sucedió cuando actualicé desde Eclipse desde 1.6.4 a 1.7.3 y la actualización salió mal por alguna razón, dejando bits de ambas versiones en las bibliotecas; Pensaría que esto es lo que le sucedió a todos los demás. La reparación consiste en cerrar todos los proyectos de App Engine y hacer la actualización nuevamente, luego cambiar 1.7.3 a la versión predeterminada. Si todavía hay un problema, busque en propiedades -> ruta de compilación -> bibliotecas ya que aún puede haber una biblioteca de soporte local 1.6.4 que solo necesita eliminar, entonces todo funciona con este servlet en su lugar.

Sería bueno saber qué hace este servlet, no pude encontrar ninguna documentación en absoluto en Google, pero ciertamente no causa ningún problema si el plugin está configurado correctamente.

1

para los que tendrá el mismo problema en el futuro voy a publicar mi solución también.

Al parecer, mi problema era sólo las bibliotecas de GWT que fueron dañados.

Así que lo que hice fue

  • ir en Proyecto -> Propiedades -> Google -> Web Toolkit -> Haga clic en 'Uso SDK específica'
  • especificar la misma versión que el predeterminado (solo para que Eclipse vuelva a crear bibliotecas y enlaces GWT).

Todo funcionó bien después de eso.

Saludos

Cuestiones relacionadas