生成uuid的Java可序列化类不适用于ehcache

时间:2012-09-06 05:19:09

标签: java ehcache serializable

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

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

在serialversionUUID上面的java默认类中,有一个完全像这样的注释“/ **使用JDK 1.0.2中的serialVersionUID来实现互操作性* /”。这是否意味着我应该使用jdk1.0.2生成uuid?我尝试了很多东西并且开放任何解决方案。谢谢你的回复。

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

自从我的第一个问题以来,抱歉我写了一些错误。

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

1 个答案:

答案 0 :(得分:0)

问题可能不是由串行版本UID引起的,而是由类加载器问题引起的。您可能会尝试将类加载器A(EHCache使用的类加载器)加载的对象转换为类加载器B(您的webapp的类加载器)加载的类。

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