Serialization Java 7迁移-新的JBoss序列化相关异常

Serialization Java 7迁移-新的JBoss序列化相关异常,serialization,deserialization,java-7,jboss6.x,Serialization,Deserialization,Java 7,Jboss6.x,我正在尝试将一个应用程序从Java6升级到Java7,我得到了一个新的异常,在Java6下运行应用程序时不存在 下面是堆栈跟踪的第一部分: java.lang.ClassCastException: java.lang.String cannot be cast to org.jboss.serial.finalcontainers.IntegerContainer at org.jboss.serial.objectmetamodel.DataContainer$DataContain

我正在尝试将一个应用程序从Java6升级到Java7,我得到了一个新的异常,在Java6下运行应用程序时不存在

下面是堆栈跟踪的第一部分:

java.lang.ClassCastException: java.lang.String cannot be cast to org.jboss.serial.finalcontainers.IntegerContainer
    at org.jboss.serial.objectmetamodel.DataContainer$DataContainerInput.readInt(DataContainer.java:1044)
    at org.jboss.serial.persister.RegularObjectPersister.readSlotWithFields(RegularObjectPersister.java:310)
    at org.jboss.serial.persister.RegularObjectPersister.defaultRead(RegularObjectPersister.java:273)
    at org.jboss.serial.persister.RegularObjectPersister.readData(RegularObjectPersister.java:241)
    at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:412)
    at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:82)
    at org.jboss.serial.objectmetamodel.DataContainer$DataContainerInput.readObject(DataContainer.java:845)
    at org.jboss.serial.persister.RegularObjectPersister.readSlotWithFields(RegularObjectPersister.java:353)
    at org.jboss.serial.persister.RegulrObjectPersister.defaultRead(RegularObjectPersister.java:273)
    at org.jboss.serial.persister.RegularObjectPersister.readData(RegularObjectPersister.java:241)
    at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:412)
    at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:82)
    at org.jboss.serial.objectmetamodel.DataContainer$DataContainerInput.readObject(DataContainer.java:845)
    at org.jboss.serial.persister.ObjectInputStreamProxy.readObjectOverride(ObjectInputStreamProxy.java:68)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:364)
    at java.util.ArrayList.readObject(ArrayList.java:733)
    at sun.reflect.GeneratedMethodAccessor352.invoke(Unknown Source)
我发现了这个JBoss错误,应该已经修复了。。。

但其固定版本(1.0.6.FINAL)尚未发布:

有没有人遇到过这种情况,可以提出解决办法

该应用程序在JBoss 6.0.0中运行


PS我知道JBoss 6已经过了其EOL,并且没有使用Java 7进行测试。

我找到了解决问题的解决方案。因为Java7改变了Vector的序列化行为,所以我改为ArrayList(它没有改变),问题已经解决了


希望这能帮助其他人解决同样的问题。

好吧,你可以自己根据SVN回购中的标签来构建发行版。或者,如果你真的相信(或者想做一个快速的实验)下载我构建的二进制文件(,但不会保证它们保持在线)

只要替换JBoss发行版中所有出现的jar,不要忘记启用系统属性修复

-Dorg.jboss.serial.sync_binary_formats=true
正如这里强调的那样


无论如何,对我来说,这至少对Vectors有效(还有其他潜在的问题,但无法传输CCHashMaps,我会活下来的;)。

+1作为答案,尽管在我的环境中,我不允许下载任何未经管理层批准的内容。事实证明,尽管最初编写相关类的人严重滥用了向量的用途,并用它们代替了列表,但正如我在上面的回答中提到的,切换到ArrayList解决了我的问题