当我调用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版本是已编译的。
什么给出了什么想法?由于
答案 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就可以了。如果你不删除它,它将导致可怕的问题(如果它出现在类路径中的番石榴之前)或者甚至永远都不会被看到(如果它出现之后)。