gae 1.7.3更新 - > java.io.InvalidClassException

时间:2012-11-28 13:40:15

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

我刚刚将Java GAE SDK更新为1.7.3,现在我尝试从本地数据存储区读取时遇到异常:

INFO: Failed to load from the backing store,
C:\Users\<user>\Documents\myproject\war\WEB-INF\appengine-generated\local_db.bin
java.io.InvalidClassException:
com.google.appengine.repackaged.com.google.io.protocol.ProtocolMessage;
local class incompatible:
    stream classdesc serialVersionUID = 2691625986599730786,
    local class serialVersionUID = -3428150205257072157
at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)

这阻止我从现有的本地数据存储中读取实体。 如果我降级到1.7.2它再次运行,但我想运行最新版本。

任何人都知道如何解决这个问题?谢谢。

2 个答案:

答案 0 :(得分:2)

如果我已正确理解您,您已使用开发Web应用程序服务器的1.7.2版创建了本地数据存储,并尝试使用1.7.3版本使用相同的数据(文件)。

较新版本的dev app服务器有责任但无法保证无法读取早期版本中保留的数据。

我发现使用1.7.2 dev app服务器存储的数据不能与1.7.3一起使用,所以这次我们都不走运。

在这种情况下,您必须使用1.7.3重新创建数据。

答案 1 :(得分:0)

我认为可能会收回您的数据但需要一些工作。如果我们在本地的两个应用程序服务器上运行您的项目:一个使用SDK 1.7.2,另一个使用较新的SDK,则使用远程api访问旧数据并复制到新数据存储,您可以重新创建所有条目。

同样,它可能有效,所以只有你必须尝试。