首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAXB /Java11/ Tomcat - DataHandler没有默认构造函数

JAXB /Java11/ Tomcat - DataHandler没有默认构造函数
EN

Stack Overflow用户
提问于 2020-05-05 20:19:12
回答 1查看 298关注 0票数 0

我在使用JAXB时遇到了一些问题,我发现它存在许多实现,我使用了JBoss,代码工作得很好(Metro JAXB),现在使用tomcat和com.sun.xml.bind。它不能,它不能将Base64编码的字符串转换为DataHandler。现在我再次重新编译它,我正在尝试@XMLAttachmentRef是否能解决我的问题。

代码语言:javascript
复制
[com.sun.xml.bind.v2.ClassFactory]  No default constructor found on class javax.activation.DataHandler
java.lang.NoSuchMethodException: javax.activation.DataHandler.<init>()
    at java.base/java.lang.Class.getConstructor0(Class.java:3349)
    at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2553)
    at com.sun.xml.bind.v2.ClassFactory.tryGetDeclaredConstructor(ClassFactory.java:107)

我所理解的是,它失败是因为DataHandler没有空的args构造函数。

我正在使用OSGI,我问自己,我是否可以通过删除com.sun.xml.bind并添加一些其他jars来注入它来更改JAXB?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-11 16:06:02

所以经过> 10h的调试,我找到了原因:

类TypeInfoSetImpl方法getTypeInfo在这里使JAXB在哈希图中查找内置类型,它用hashcode()比较类类型,但我的两个javax.activation.DataHandler有两个不同的类加载器,这导致它们不同,所以它返回null,并且类javax.activation.DataHandler被重新识别为pojo自定义类,可以用null参数构造函数实例化。

删除secound jar解决了我的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61612982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档