【javax.xml.bind.PropertyException: name: com.sun.xml.internal.bind.marshaller.CharacterEscapeHandle】
xml解析找不到CharacterEscapeHandler
·
引用了第三方jar包和钉钉的jar包,钉钉jar包没引入前正常,引入后报错
javax.xml.bind.PropertyException: name: com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler value: com.mybank.api.internal.util.JaxbUtil$1@1a257f01
com.mybank.api.internal.util.JaxbUtil为第三方jar包的实现类
解决方案
<!--钉钉sdk-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dingtalk</artifactId>
<version>1.1.86</version>
<exclusions>
<exclusion>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
</exclusion>
</exclusions>
</dependency>
去除 jaxb-core和jaxb-impl就行
<exclusions>
<exclusion>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
</exclusion>
</exclusions>
问题debug
因为JAXBContext使用工厂模式,很难去看到底层如何获取实现类,只能一层一层debug。
ContextFinder 类里面有个 resourceURL = classLoader.getResource(resource);
此记录将从jar包(jaxb)路径获取,去除后会从其他地方获取

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)