引用了第三方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)路径获取,去除后会从其他地方获取
在这里插入图片描述

Logo

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

更多推荐