Serialization Java 7迁移-新的JBoss序列化相关异常
我正在尝试将一个应用程序从Java6升级到Java7,我得到了一个新的异常,在Java6下运行应用程序时不存在 下面是堆栈跟踪的第一部分: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
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解决了我的问题