Java-googleappengine-InvalidClassException当我更改存储在会话作用域中的类时
我更新了我的用户类,现在每当会话作用域中存储了旧版本的用户类的人访问我的站点时,我会得到一个Java-googleappengine-InvalidClassException当我更改存储在会话作用域中的类时,java,google-app-engine,session,Java,Google App Engine,Session,我更新了我的用户类,现在每当会话作用域中存储了旧版本的用户类的人访问我的站点时,我会得到一个InvalidClassException javax.servlet.ServletException: java.lang.RuntimeException: java.io.InvalidClassException: User; local class incompatible: stream classdesc serialVersionUID = 4949038118012519093,
InvalidClassException
javax.servlet.ServletException: java.lang.RuntimeException:
java.io.InvalidClassException: User; local class incompatible:
stream classdesc serialVersionUID = 4949038118012519093,
local class serialVersionUID = -971500502189813151
如何阻止这些用户发生此错误?每次我想更新存储在会话作用域中的类时,我可能会使每个人的会话无效,但是有没有更好的方法,让我的用户不必再次登录?您可以添加
private final long serialVersionUID=4949038118012519093;
根据您的类定义。新类应该以相同的顺序具有相同的可序列化字段。在Java中,当一个类被序列化和反序列化时,会对该类的serialVersionUID进行检查。默认行为是在编译时为每个可序列化类分配一个新的随机数(如果不是由开发人员创建的)。如果将1设置为随机数或-1,则只要该类没有更改,就可以了。如果添加生成的serialVersionUID(例如在eclipse IDE中),然后修改该类并部署代码而不重新生成serialVersionUID,会发生什么情况?我没有关闭浏览器,但是我通过GAE数据存储查看器删除了所有会话,但仍然出现反序列化错误。