在GAE MemCache中获取java.lang.NoSuchFieldError:usingExperimentalRuntime

时间:2017-01-31 01:39:32

标签: java google-app-engine google-cloud-datastore

每当我尝试访问MemCache时,我都会得到java.lang.NoSuchFieldError: usingExperimentalRuntime。我找不到该领域的文档。是否有一些我不知道的配置选项?

这是源代码:

MemcacheService syncCache = MemcacheServiceFactory.getMemcacheService();
syncCache.setErrorHandler(ErrorHandlers.getConsistentLogAndContinue(Level.ALL));

Object cacheObject = syncCache.get("arbitrary");

最后一行因此错误而崩溃(部分堆栈跟踪到我的代码):

Caused by: java.lang.NoSuchFieldError: usingExperimentalRuntime
        at com.google.appengine.api.memcache.MemcacheServicePb$MemcacheGetRequest.writeTo(MemcacheServicePb.java:1511)
        at com.google.appengine.repackaged.com.google.protobuf.AbstractMessageLite.toByteArray(AbstractMessageLite.java:41)
        at com.google.appengine.api.memcache.MemcacheServiceApiHelper.makeAsyncCall(MemcacheServiceApiHelper.java:97)
        at com.google.appengine.api.memcache.AsyncMemcacheServiceImpl.doGet(AsyncMemcacheServiceImpl.java:405)
        at com.google.appengine.api.memcache.AsyncMemcacheServiceImpl.getIdentifiable(AsyncMemcacheServiceImpl.java:422)
        at com.google.appengine.api.memcache.MemcacheServiceImpl.getIdentifiable(MemcacheServiceImpl.java:54)
        at com.myCode.CacheOrDbUtil.getUser(CacheOrDbUtil.java:27)

这个奇怪之处在于代码在上周工作,完成了使用MemCache的单元测试。现在他们失败了。当然,我已经尝试撤消我所做的一切,但没有成功:

  • 升级gcloud
  • 降级gcloud
  • 关闭所有其他服务器
  • 重新启动计算机
  • 重置为上次已知的良好代码修订

3 个答案:

答案 0 :(得分:2)

要么保留1.9.48(现在在Cloud SDK中开箱即用,下周升级到1.9.49)并确保你的pom.xml / gradle构建文件全部使用1.9.48, 或使用https://github.com/GoogleCloudPlatform/appengine-maven-plugin

中的标准appengine Maven插件
<plugin>
   <groupId>com.google.appengine</groupId>
   <artifactId>appengine-maven-plugin</artifactId>
   <version>1.9.49</version>
</plugin>

或等效的AppEngine Gradle插件(不是Cloud SDK one ..)

答案 1 :(得分:0)

尝试将appEngineVersion更新为1.9.49

答案 2 :(得分:0)

我们必须将所有内容都推到1.9.49才能让它发挥作用。我不确定为什么Maven还没有在网站上列出它......

它就在那里 - 它没有列出:

https://repo1.maven.org/maven2/com/google/appengine/appengine-api-1.0-sdk/1.9.49/appengine-api-1.0-sdk-1.9.49.jar