GCS客户端库NoSuchMethod systemNanoTime

时间:2013-07-17 03:58:31

标签: google-app-engine google-cloud-storage

当我调用createOrReplace时,

private GcsService gcsService = 
GcsOutputChannel outputChannel = gcsService.createOrReplace(file, GcsFileOptions.getDefaultInstance());

我看到了

java.lang.NoSuchMethodError: com.google.common.base.Platform.systemNanoTime()J
at com.google.common.base.Ticker$1.read(Ticker.java:60)
at com.google.common.base.Stopwatch.start(Stopwatch.java:114)
at com.google.appengine.tools.cloudstorage.RetryHelper.doRetry(RetryHelper.java:88)
at com.google.appengine.tools.cloudstorage.RetryHelper.runWithRetries(RetryHelper.java:138)
at com.google.appengine.tools.cloudstorage.GcsServiceImpl.createOrReplace(GcsServiceImpl.java:47)
at com.train.trainercircle.rest.ImageResource.getExercises(ImageResource.java:72)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:45)
at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
at 

我查看了elipse中的pom文件依赖项管理器,并确保gcs-client库所需的guava版本是已编译的。

什么给出了什么想法?

由于

1 个答案:

答案 0 :(得分:2)

根据建议here你可能在你的类路径以及番石榴上有一个google-collections jar。一定要删除它。 如果使用Maven

<exclusions>
  <exclusion>
    <artifactId>google-collect</artifactId>
    <groupId>com.google</groupId>
  </exclusion>
</exclusions>

另见here

  

Guava是旧版Google Collections Library的完全兼容超集。它还包括多年的错误修复,文档修复和性能修复,因此我们强烈建议您使用Guava而不是Google Collections。

     

如果您的应用程序在同一类路径上同时使用google-collect-1.0.jar和guava-r ##。jar,只需删除Google Collections JAR就可以了。如果你不删除它,它将导致可怕的问题(如果它出现在类路径中的番石榴之前)或者甚至永远都不会被看到(如果它出现之后)。