

Google App Engineのチュートリアルをほぼそのままコピーして下記のようなコードを書きました。

[code]

    package com.example.appengine.helloworld;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import java.util.Date;
    import com.google.appengine.api.datastore.*;
    
    // [START example]
    @SuppressWarnings("serial")
    public class HelloServlet extends HttpServlet {
    
      @Override
      public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        PrintWriter out = resp.getWriter();
        DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
        Entity employee = new Entity("Employee");
        employee.setProperty("firstName", "Antonio");
        employee.setProperty("lastName", "Salieri");
        Date hireDate = new Date();
        employee.setProperty("hireDate", hireDate);
        employee.setProperty("attendedHrTraining", true);
        datastore.put(employee);
    
        out.println("Hello, world");
      }
    }
    // [END example]
    
[/code]

これを mvn appengine:update でデプロイしてGoogleのサーバーで見ると動いているのですが、  
mvn appengine:devserver でローカルでテストしようとすると下記のエラーがでます。

[code]

    HTTP ERROR 500
    
    Problem accessing /. Reason:
    
        java.lang.NoSuchMethodException: com.google.appengine.repackaged.com.google.common.base.internal.Finalizer.startFinalizer(java.lang.Class, java.lang.Object)
    Caused by:
    
    java.lang.AssertionError: java.lang.NoSuchMethodException: com.google.appengine.repackaged.com.google.common.base.internal.Finalizer.startFinalizer(java.lang.Class, java.lang.Object)
        at com.google.appengine.repackaged.com.google.common.base.FinalizableReferenceQueue.getStartFinalizer(FinalizableReferenceQueue.java:313)
        at com.google.appengine.repackaged.com.google.common.base.FinalizableReferenceQueue.<clinit>(FinalizableReferenceQueue.java:105)
        at com.google.appengine.repackaged.com.google.common.collect.Interners$WeakInterner.<clinit>(Interners.java:118)
        at com.google.appengine.repackaged.com.google.common.collect.Interners.newWeakInterner(Interners.java:59)
        at com.google.appengine.repackaged.com.google.io.protocol.ProtocolSupport.<clinit>(ProtocolSupport.java:55)
        at com.google.apphosting.api.DatastorePb$PutRequest.freeze(DatastorePb.java:10046)
        at com.google.apphosting.api.DatastorePb$PutRequest$1.<init>(DatastorePb.java:9961)
        at com.google.apphosting.api.DatastorePb$PutRequest.<clinit>(DatastorePb.java:9958)
        at com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServiceImpl.java:145)
        at com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServiceImpl.java:131)
        at com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServiceImpl.java:123)
        at com.example.appengine.helloworld.HelloServlet.doGet(HelloServlet.java:26)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
        at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:128)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366)
        at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349)
        at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
        at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
        at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:98)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:512)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:326)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
        at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
        at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
    Caused by: java.lang.NoSuchMethodException: com.google.appengine.repackaged.com.google.common.base.internal.Finalizer.startFinalizer(java.lang.Class, java.lang.Object)
        at java.lang.Class.getMethod(Class.java:1778)
        at com.google.appengine.repackaged.com.google.common.base.FinalizableReferenceQueue.getStartFinalizer(FinalizableReferenceQueue.java:311)
        ... 48 more
    Caused by:
    
    java.lang.NoSuchMethodException: com.google.appengine.repackaged.com.google.common.base.internal.Finalizer.startFinalizer(java.lang.Class, java.lang.Object)
        at java.lang.Class.getMethod(Class.java:1778)
        at com.google.appengine.repackaged.com.google.common.base.FinalizableReferenceQueue.getStartFinalizer(FinalizableReferenceQueue.java:311)
        at com.google.appengine.repackaged.com.google.common.base.FinalizableReferenceQueue.<clinit>(FinalizableReferenceQueue.java:105)
        at com.google.appengine.repackaged.com.google.common.collect.Interners$WeakInterner.<clinit>(Interners.java:118)
        at com.google.appengine.repackaged.com.google.common.collect.Interners.newWeakInterner(Interners.java:59)
        at com.google.appengine.repackaged.com.google.io.protocol.ProtocolSupport.<clinit>(ProtocolSupport.java:55)
        at com.google.apphosting.api.DatastorePb$PutRequest.freeze(DatastorePb.java:10046)
        at com.google.apphosting.api.DatastorePb$PutRequest$1.<init>(DatastorePb.java:9961)
        at com.google.apphosting.api.DatastorePb$PutRequest.<clinit>(DatastorePb.java:9958)
        at com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServiceImpl.java:145)
        at com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServiceImpl.java:131)
        at com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServiceImpl.java:123)
        at com.example.appengine.helloworld.HelloServlet.doGet(HelloServlet.java:26)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
        at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:128)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366)
        at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349)
        at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
        at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
        at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:98)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:512)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:326)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
        at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
        at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
    Powered by Jetty://
    
[/code]

どうすればローカルでも動作するようにできるでしょうか？


CC BY-SA 3.0
2016-02-06T03:19:21.553
21762
2016-04-07T14:16:03.207
10074
question
java maven google-app-engine
Google App Engine for Java のコードがローカルホストで動かない。


私の環境では、同じコードを `mvn appengine:devserver`で実行することができました。  
なので、環境周りな気がします。maven実行時のclass
pathやJava7で動いているかどうかを確認してみると、何か解決の糸口が見つかるかもしれません。


CC BY-SA 3.0
2016-02-07T13:11:16.807
21815
2016-02-07T13:11:16.807
4361
21762
answer