每当我尝试访问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的单元测试。现在他们失败了。当然,我已经尝试撤消我所做的一切,但没有成功:
答案 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还没有在网站上列出它......
它就在那里 - 它没有列出: