2012-09-06 9 views
6

Ostatnio próbowałem utworzyć nowy projekt gwt/gae za pomocą wtyczki Google eclipse. Zrobiłem to w przeszłości z powodzeniem i mam kilka projektów w fazie rozwoju, które nie mają problemów.wyjątek dla wskaźnika null dla nowego rozszerzenia Google przy użyciu wtyczki Eclipse

Otrzymuję wyjątek NullPointerException podczas próby uruchomienia aplikacji sieci Web. Oto ślad stosu.

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) 

Nie mam pojęcia, gdzie można to debugować.

+0

Mam ten sam problem przy użyciu JDK 1.6 i Eclipse indygo - Jakoś udało mi się dostać kod aplikacji do pracy raz, wdrażając go do Google App Engine. Eclipse skompilowałby go bez żadnych problemów. Próbowałem powtórzyć to ponownie, aby zapewnić krok po kroku, bez powodzenia i błąd powrócił. – TeckniX

+0

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

Odpowiedz

0

Chociaż może to nie być właściwe rozwiązanie, udało mi się dostać to działa w moim środowiska:

  • aktualizacji Eclipse do najnowszej wersji indygo (3.7.2)
  • odinstalować/zainstalować Google App narzędzia Silnik
  • Tworzenie nowego projektu z następujących samouczek (można sprawdzić „Generowanie projektu przykładowy kod”) i że będzie dodać całego świata powitania dla Ciebie

Uruchom go i sh Byłoby dobrze iść.

ps: z jakiegoś powodu moje zaćmienie nie pokazuje żadnych wyników debugowania, ale dev_appserver.sh nie narzeka już na błędy.

+0

Jako komentarz boczny, zorientowałem się, dlaczego Eclipse nie uruchomi mojego ... ciągle narzeka na Brak pliku com.appengine.tools.development.DevAppServerMain - Po prostu można go skopiować do katalogu wojny/WEB-INF/lib/z com.google.appengine.eclipse.sdkbundle_1.7.1/appengine-java-sdk- 1.7.1/lib/appengine-tools-api.jar - Potem wszystko przebiegło gładko. – TeckniX

4

Zrobiłem świeżą instalację Eclipse Juno z wtyczką Google (GWT + GAE). Teraz zauważam, że wtyczka nieustannie próbuje zmodyfikować mój plik web.xml.

Próbuje dodać tę definicję 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> 

I nie były w stanie dowiedzieć się, jak zatrzymać jej dzieje, ale to naprawdę denerwujące, ponieważ muszę być stale powraca ten plik, aby uniknąć kontroli w tych zmianach.

Spróbuj usunąć ten serwlet z pliku web.xml. Wydaje się, że nie służy to żadnemu celowi. Może to mieć związek z Google Cloud

+0

Czy proponujesz odpowiedź, aby usunąć serwlet z pliku web.xml? To brzmi trochę bardziej jak pytanie, niż odpowiedź, co może sprawić, że twoje podsumowanie będzie nieco jaśniejsze. –

+0

dzięki właśnie miałem ten sam problem z migracją do SDK 1.7.3 faktycznie modyfikuje plik web.xml, dodając, że SystemServiceServlet, który łamie serwer. Usunięcie działa. – doright

+1

Będzie nadal modyfikował swój plik web.xml za każdym razem, gdy zapiszesz plik w projekcie. Aby wyłączyć tę funkcję, otwórz ustawienia projektu w Eclipse, a następnie wybierz Builders, a następnie odznacz pole "Google App Engine Project Change Notifier" – bpossolo

2

Stało się tak, gdy zaktualizowałem z poziomu Eclipse z wersji 1.6.4 na 1.7.3, a aktualizacja z jakiegoś powodu poszła źle, pozostawiając bity obu wersji w bibliotekach; Sądzę, że to właśnie stało się z każdym innym. Poprawka polega na zamknięciu wszystkich projektów AppEngine i ponownym wykonaniu aktualizacji, a następnie przełączeniu wersji 1.7.3 na wersję domyślną. Jeśli nadal występuje problem, poszukaj właściwości -> ścieżka kompilacji -> biblioteki, ponieważ wciąż może być dostępna lokalna biblioteka pomocy 1.6.4, którą po prostu trzeba usunąć, a następnie wszystko działa z serwletem w miejscu.

Byłoby miło wiedzieć, co robi ten serwlet, nie mogłem znaleźć żadnej dokumentacji w Google, ale z pewnością nie powoduje żadnych problemów, jeśli wtyczka jest poprawnie skonfigurowana.

1

dla tych, którzy będą mieli ten sam problem w przyszłości, opublikuję również moje rozwiązanie.

Najwyraźniej moim problemem były właśnie uszkodzone biblioteki GWT.

Więc co zrobiłem było

  • iść na projekt -> Właściwości -> Google -> Web Toolkit -> kliknij na 'korzystanie z wybranych SDK'
  • określić tę samą wersję jako domyślnie (tak, aby Eclipse ponownie tworzy biblioteki i łącza GWT).

Po tym wszystkim wszystko poszło dobrze.

Cheers

Powiązane problemy