6
votes

NULL POINTER Exception pour la nouvelle Google Ajout en utilisant un plug-in Eclipse

J'ai récemment essayé de créer un nouveau projet GWT / GAE à l'aide du plug-in Google Eclipse. J'ai fait cela dans le passé avec succès et j'ai plusieurs projets en cours de développement qui n'ont pas de problèmes.

Je reçois une nullpointerException lorsque j'essaie de lancer l'application Web. Voici la trace de la pile. P>

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 com.google.appengine.tools.development.DevAppEngineWebAppContext@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)


2 commentaires

J'ai le même problème à utiliser JDK 1.6 et Eclipse Indigo - j'ai réussi à obtenir le code de l'application pour travailler une fois, en le déployant sur le moteur d'application de Google. Eclipse le compilerait alors sans aucun problème. J'ai essayé de reproduire cela à nouveau, afin de fournir étape par étape, sans chance et l'erreur est revenue.


Stackoverflow.com/ Questions / 12060233 / ...


4 Réponses :


0
votes

Bien que cela ne soit peut-être pas une solution appropriée, j'ai réussi à le faire fonctionner dans mon environnement:

  • Mise à jour Eclipse à la dernière version d'Indigo (3.7.2)
  • Désinstallation / Installez les outils du moteur d'application Google
  • Créez un nouveau projet à partir du tutoriel suivant (vous pouvez vérifier «Générer le code exemple du projet») et ajoutera tout le monde Hello pour vous

    exécutez-le et il devrait être bon d'aller.

    PS: Pour une raison quelconque, mon éclipse ne montre aucune sortie de débogage, mais le dev_appserver.sh ne se plaignait plus des erreurs.


1 commentaires

Comme un commentaire latéral, j'ai compris pourquoi Eclipse n'irait pas la mienne. Cela continuait à se plaindre du com.appengine.tools.development.DevappServerMain manquant - s'avère simplement, vous pouvez simplement le copier à votre guerre / web-inf / lib / répertoire de com.google.appengine.1.7.1 / appengine-java-sdk-1.7.1 / LIB / appeng ine-outils-API.jar - Après cela, tout a été lisse.



4
votes

J'ai fait une nouvelle installation d'Eclipse Juno avec le plugin Google (GWT + GAE). Je remarque maintenant que le plugin essaie constamment de modifier mon fichier web.xml.

Il essaie d'ajouter cette définition de servlet: p>

  <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>


3 commentaires

La réponse est-elle proposée ici pour supprimer le servlet de web.xml? Cela lut un peu plus comme une question que d'une réponse, la mise en place de votre résumé pour la première fois.


Merci, je viens d'avoir le même problème à migrer vers SDK 1.7.3, il modifie effectivement le web.xml en ajoutant que SystemServiceServlet qui brise le serveur. Supprimer ça marche.


Il continuera à modifier votre web.xml chaque fois que vous enregistrez un fichier dans votre projet. Afin de désactiver cette éteinte, ouvrez vos paramètres de projet dans Eclipse, puis sélectionnez Builders, puis décochez la case "Google App Moteur Modifier le notifiant" "



2
votes

Cela m'est arrivé lorsque je me suis mis à jour à partir de l'éclipse de 1,6,4 à 1.7.3 et la mise à jour a mal tourné pour une raison quelconque, laissant des bits des deux versions dans les bibliothèques; Je penserais que c'est ce qui est arrivé à tous les autres. Correction est de fermer tous les projets appengine et de faire la mise à jour à nouveau, puis basculez 1.7.3 pour être la version par défaut. S'il y a toujours un problème, regardez dans les propriétés -> Construction Path -> Bibliothèques Comme il peut toujours y avoir une bibliothèque de support locale 1.6.4 que vous venez de supprimer, alors tout fonctionne avec ce servlet en place.

Il serait bon de savoir ce que ce servlet fait, je ne pouvais trouver aucune documentation sur Google, mais cela ne cause certainement aucun problème si le plugin est correctement configuré.


0 commentaires

1
votes

Pour ceux qui auront le même problème à l'avenir, je posterai ma solution aussi.

Apparemment, mon problème n'était que les bibliothèques GWT qui ont été corrompues.

alors ce que j'ai fait était

  • aller sur le projet -> Propriétés -> Google -> Toolkit Web -> Cliquez sur 'Utiliser spécifique SDK'
  • Spécifiez la même version que la valeur par défaut (Juste Eclipse recréera les bibliothèques et les liens GWT).

    Tout a fonctionné bien après cela.

    acclamations


0 commentaires