3

当我调用 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 版本是已编译的。

什么给出,任何想法?

谢谢

4

1 回答 1

3

正如这里建议的那样,您的类路径和 Guava 上可能有一个 google-collections jar。确保将其删除。如果使用 Maven

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

另请参阅此处

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

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

于 2014-01-29T23:42:10.007 回答