Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-googleappengine-InvalidClassException当我更改存储在会话作用域中的类时_Java_Google App Engine_Session - Fatal编程技术网

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数据存储查看器删除了所有会话,但仍然出现反序列化错误。