`
tianlihu
  • 浏览: 313984 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

XStream no-args constructor

 
阅读更多

 

今天工作中遇到了这个问题:

com.thoughtworks.xstream.converters.ConversionException: Cannot construct ClassXXX as it does not have a no-args constructor : Cannot construct java.util.RandomAccessSubList as it does not have a no-args constructor

 

害得我跟我们同事忙活了一个下午才搞定

 

一般出现这个问题是因为在使用XStream时,某些类没有实现序列化,且又没有空的构造器。这些类一般是第三方包中的,自己写的类直接实现序列化或添加一个空的构造器就行了。

 

解决这个问题可以有两种实现方式:

1. 使用Converter,把这个类的对象反序列化

例如:

 

public class RandomAccessSubListConverter extends CollectionConverter {

public RandomAccessSubListConverter(Mapper mapper) {
    super(mapper); 
} 

@Override
public boolean canConvert(Class arg0) {     
    return arg0.getName().equals("java.util.RandomAccessSubList");
}

@Override
public Object unmarshal(HierarchicalStreamReader reader,
        UnmarshallingContext context) {        
    reader.moveDown();
    ArrayList arrayList = new ArrayList();
    populateCollection(reader, context, arrayList);
    reader.moveUp();
    return arrayList;
}

 

2. 可以升级JDK到6.XX版本以上,XStream就可以支持非序列化且没有空构造器的类了。
 
 
今天遇到的这个问题的原因就是因为JDK版本的问题造成的。
在WebLogic下,大多数人都喜欢用jrocket的JDK,因为Oracle宣称它是最快的JDK,但是oracle 11g自带的JDK和XStream存在这个兼容问题。
 
我们换回了JDK 1.6.22,问题就解决了。
 
见老外的讨论:
分享到:
评论

相关推荐

    xstream-1.4.5.jar

    xstream xstream-1.4.5.jar

    powermock-classloading-xstream-1.4.7

    powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-class...

    xstream-1.4.3-sources.jar

    XStream 用法详解 XML 转换为 java 实体类 所需要的 xstream-1.4.3-sources.jar jar包 具体实现请参考 http://blog.csdn.net/morning99/article/details/28875159

    xstream-1.3.1-sae-liufeng

    修改XStream源码,解决SAE不支持XStream的问题。

    xstream-1.4.15.jar

    XStream 反序列化漏洞(CVE-2020-26258 & 26259),修复jar包 xstream-1.4.15.jar Xstream 是 Java 类库,用来将对象序列化成 XML (JSON) 或反序列化为对象。XStream 是一款开源软件,允许在 BSD 许可证的许可下分发...

    xstream最新版 - xstream-1.4.18.jar

    xstream最新版jar包

    xstream-1.4.20.jar

    xstream-1.4.20.jar

    xstream-1.4.11-API文档-中文版.zip

    赠送jar包:xstream-1.4.11.jar; 赠送原API文档:xstream-1.4.11-javadoc.jar; 赠送源代码:xstream-1.4.11-sources.jar; 赠送Maven依赖信息文件:xstream-1.4.11.pom; 包含翻译后的API文档:xstream-1.4.11-...

    xstream-1.4.4-sources.jar

    XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换。将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件。

    xstream-all-1.4.7.jar

    xstream-all-1.4.7.jar;xstream-all-1.4.7.jar;xstream-all-1.4.7.jar;

    xstream-1.4.7-API文档-中文版.zip

    赠送jar包:xstream-1.4.7.jar; 赠送原API文档:xstream-1.4.7-javadoc.jar; 赠送源代码:xstream-1.4.7-sources.jar; 赠送Maven依赖信息文件:xstream-1.4.7.pom; 包含翻译后的API文档:xstream-1.4.7-javadoc-...

    xstream-1.4.2.jar

    在压缩包子文件的文件名称列表中,我们只看到"xstream-1.4.2",这可能是XStream-1.4.2版本的源代码或者文档,或者是未打包的JAR文件。解压后,用户可以查看源代码,了解其内部实现,或者进行二次开发。 深入理解...

    xstream-1.4.10-java7.jar

    xstream-1.4.10-java7.jar。 稳定版,由jdk1.7编译。

    xstream-1.4.7-API文档-中英对照版.zip

    赠送jar包:xstream-1.4.7.jar; 赠送原API文档:xstream-1.4.7-javadoc.jar; 赠送源代码:xstream-1.4.7-sources.jar; 赠送Maven依赖信息文件:xstream-1.4.7.pom; 包含翻译后的API文档:xstream-1.4.7-javadoc-...

    xstream-1.4.17.jar

    xstream-1.4.17.jar

    xstream-1.4.11-API文档-中英对照版.zip

    赠送jar包:xstream-1.4.11.jar; 赠送原API文档:xstream-1.4.11-javadoc.jar; 赠送源代码:xstream-1.4.11-sources.jar; 赠送Maven依赖信息文件:xstream-1.4.11.pom; 包含翻译后的API文档:xstream-1.4.11-...

    xstream-1.4.19.jar

    xstream-1.4.19.jar

    XStream <--> Java 对象序列化为 XML 互换

    使用 XStream 不用任何映射就能实现多数 Java 对象的序列化。在生成的 XML 中对象名变成了元素名,类中的字符串组成了 XML 中...该下载资源包括示例源码、相关的 xpp3_min-1.1.4c.jar xstream-1.3.jar 包及XStream API

    xstream-1.4.8最齐全的jar包

    标题中的"xstream-1.4.8最齐全的jar包"表明这是一个包含了XStream库所有功能的完整版本,版本号为1.4.8,适用于各种需求。 描述中提到"java对象转xml以及xml转java对象,操作很简单",这体现了XStream的核心特性。...

Global site tag (gtag.js) - Google Analytics