1

我正在开发一个项目,我需要缓存一些需要这些类实现可序列化的类。我收到的错误类似于此“classcastexception:class demo.xtyA(我序列化的任何类)无法转换为类 demo.xtyA”。我的意思是类彼此完全相同。

经过深入尝试,我发现该程序有效,当我使用实现可序列化而不是我的可序列化类的java自己的类时。我使用 netbeans 网站中建议的插件在 netbeans 中生成了 uuid。我很确定原因是我自己生成的 uuid,但为什么 uuid 不起作用?生成 uuid 后,我没有对类进行任何更改。

在 serialversionUUID 之上的 java 默认类中,有一条与此完全相同的注释“/** 使用 JDK 1.0.2 中的 serialVersionUID 以实现互操作性 */”。这是否意味着我应该使用 jdk1.0.2 生成 uuid?我尝试了很多事情并对任何解决方案持开放态度。感谢您的回复。

为了帮助可能遇到相同问题的开发人员,我有一个我不想使用的解决方案。您可以单独缓存每个变量,而不是缓存整个类。

从我的第一个问题开始,对于我写问题的任何错误,我深表歉意。

编辑:我正在使用 servlet。当我运行 servlet 时它工作正常,但在另一个部署后它失败了。

4

1 回答 1

0

该问题可能不是由串行版本的 UID 引起的,而是由类加载器问题引起的。您可能尝试将其类由类加载器 A(EHCache 使用的类加载器)加载的对象强制转换为由类加载器 B(您的 web 应用程序的类加载器)加载的类。

如果没有更多细节,很难说出您应该做什么,但请确保您的类可以由一个且只有一个类加载器加载。例如,如果该类同时位于 webapp 的类路径 (WEB-INF/lib) 和服务器类路径中,则可能是问题所在。

于 2012-09-06T07:09:34.230 回答