GAE 1.7.3更新 -> java.io.InvalidClassException

4

我刚刚将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个回答

2
如果我理解正确,您使用开发Web应用程序服务器1.7.2版本创建了本地数据存储,并尝试使用1.7.3版本来使用相同的数据(文件)。
较新版本的dev app服务器可能无法读取先前版本持久化的数据,但不能保证会出现这种情况。
我发现使用1.7.2 dev app服务器存储的数据无法与1.7.3一起使用,所以这次我们都很不幸。
在这种情况下,您将不得不使用1.7.3重新创建您的数据。

如果你是正确的,那在实际服务器上意味着什么?我会在那里遇到同样的问题吗? - ghost23
不同版本的开发应用服务器之间可能存在数据存储文件不兼容的问题,但这并不影响实际系统的运行。这只是开发应用服务器的一个小问题。 - Ian Marshall

0

我认为有可能恢复您的数据,但需要一些工作。如果我们在本地运行您的项目并使用两个应用服务器:一个使用SDK 1.7.2,另一个使用更新的SDK,然后使用远程API访问旧数据并将其复制到新数据存储中,您可以重新创建所有条目。

再次强调,这可能有效,所以只有在必要时才尝试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接