MemCacheにアクセスしようとすると、いつでもjava.lang.NoSuchFieldError: usingExperimentalRuntime
が返されます。私が見つけたものからそのフィールドに関する文書はありません。私が気づいていない設定オプションはありますか?java.lang.NoSuchFieldErrorを取得する:GAE MemCacheでExecutionRuntimeを使用する
ここでは、ソース・コードです:
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既知の適切なコードの改正
私は、テストサーバーと開発サーバーの両方に1.9.48を使用するようにgradleを設定しました。ありがとう!デベロッパーが最新版( '+'バージョンのgradle)を使用し、テストで1.9.46を使用する前に、 1.9.49に両方を設定すると、devサーバーで動作しませんでした。最新の安定したリリースはうまくいった。 –