5389


GAE/Java + Slim3 において、

[code]

    new GcsFileOptions.Builder()
    .mimeType(mimeType).acl("bucket-owner-full-control")
    .build();
    
[/code]

を実行した際に `java.lang.NoSuchMethodError`
が発生してしまいます。昨日デプロイしたプロジェクトのみで発生しており、その他の同処理を含んだプロジェクトでは発生しております。

原因ご存じの方いましたら対策ご教授下さい。

以下ログ：

[code]

    java.lang.NoSuchMethodError: com.google.common.base.Stopwatch.createUnstarted()Lcom/google/common/base/Stopwatch;
        at com.google.appengine.tools.cloudstorage.RetryHelper.runWithRetries(RetryHelper.java:156)
        at com.google.appengine.tools.cloudstorage.GcsServiceImpl.createOrReplace(GcsServiceImpl.java:70)
        at com.cresco.apps.report.service.GoogleCloudStorageService.getNewFile(GoogleCloudStorageService.java:56)
        at com.cresco.apps.report.service.GoogleCloudStorageService.doFileItemUpload(GoogleCloudStorageService.java:84)
        at com.cresco.apps.report.controller.maintenance.ImportController.doPost(ImportController.java:229)
        at com.cresco.apps.report.controller.maintenance.ImportController.run(ImportController.java:127)
        at org.slim3.controller.Controller.runBare(Controller.java:111)
        at org.slim3.controller.FrontController.processController(FrontController.java:491)
        at org.slim3.controller.FrontController.doFilter(FrontController.java:277)
        at org.slim3.controller.FrontController.doFilter(FrontController.java:237)
        at org.slim3.controller.FrontController.doFilter(FrontController.java:199)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at org.slim3.datastore.DatastoreFilter.doFilter(DatastoreFilter.java:55)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at org.slim3.controller.HotReloadingFilter.doFilter(HotReloadingFilter.java:192)
        at org.slim3.controller.HotReloadingFilter.doFilter(HotReloadingFilter.java:157)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:125)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:60)
        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 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.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:254)
        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 com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
        at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:146)
        at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:484)
        at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:438)
        at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:445)
        at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:220)
        at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:309)
        at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:301)
        at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:442)
        at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
        at java.lang.Thread.run(Thread.java:724)
    
[/code]


CC BY-SA 3.0
2015-01-27T02:05:50.260
5385
2015-01-27T02:31:40.323
2015-01-27T02:22:54.073
4978
7569
question
java google-app-engine guava
Google GCS Client Library の GcsFileOptions で java.lang.NoSuchMethodError

[code]

    java.lang.NoSuchMethodError: com.google.common.base.Stopwatch.createUnstarted()Lcom/google/common/base/Stopwatch;
        at com.google.appengine.tools.cloudstorage.RetryHelper.runWithRetries(RetryHelper.java:156)
    
[/code]

トレースを見る限り、 `Stopwatch` クラスは見つかるが、 `createUnstarted()` メソッドが見つからないという状態です。 [API
ドキュメント](http://docs.guava-
libraries.googlecode.com/git/javadoc/com/google/common/base/Stopwatch.html#createUnstarted\(\))では、これは
Guava バージョン 15 から追加されたメソッドということですから、クラスパスのどこかに、 Guava < 15 を含む jar
が存在しているのではないでしょうか？デプロイ先、または pom.xml
や、IDEプロジェクト設定のクラスパスに古いものがないか見なおしてみるといいかもしれません。

（緊急には、 ClassLoader の読込優先度が高い場所に guava => 15 を置くというのがありますが、場当たり的なのでお勧めできません。）


CC BY-SA 3.0
2015-01-27T02:26:22.887
5389
2015-01-27T02:31:40.323
2015-01-27T02:31:40.323
4978
4978
5385
answer