gpt4 book ai didi

java - JAXB/Java 11/Tomcat - DataHandler 无默认构造函数

转载 作者:行者123 更新时间:2023-12-01 16:54:35 26 4
gpt4 key购买 nike

我在使用 JAXB 时遇到了一些麻烦,我发现它存在许多实现,我使用了 JBoss 并且代码运行良好(Metro JAXB),现在使用 tomcat 和 com.sun.xml.bind.. 它没有t,它无法将 Base64 编码的 String 转换为 DataHandler。现在我再次重新编译它,我正在尝试 @XMLAttachmentRef 是否可以解决我的问题。

[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 没有 null args 构造函数。

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

最佳答案

经过超过 10 个小时的调试,我找到了原因:

类 TypeInfoSetImpl 方法 getTypeInfo这里使 JAXB 查找 hashmap 中的内置类型,它将类类型与 hashcode() 进行比较,但是我的两个 javax.activation.DataHandler 有两个不同的类加载器,这导致它们不同,因此它返回 null 和javax.activation.DataHandler 类被重新定义为 pojo 自定义类,可以使用 null args 构造函数实例化。

删除第二个 jar 解决了我的问题。

关于java - JAXB/Java 11/Tomcat - DataHandler 无默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61612982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com