You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

登录时出现java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter的解决方法

解决方案:解决java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter

1. 完善JAXB依赖配置

确保pom.xml中引入完整的JAXB API与实现依赖,且依赖范围正确(Java 9+不再默认提供这些类),推荐配置如下:

<!-- JAXB API核心 -->
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<!-- JAXB实现类 -->
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.1</version>
    <scope>runtime</scope>
</dependency>
<!-- JAXB核心工具类 -->
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.3.0.1</version>
</dependency>
<!-- 激活依赖(兼容旧版本需求) -->
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>

如果是Spring Boot项目,可直接引入starter简化配置:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jaxb</artifactId>
</dependency>

2. 适配Java 9+模块系统

若项目运行在Java 9及以上版本,需在maven-compiler-plugin中添加模块参数,确保JAXB模块被加载:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>11</source> <!-- 替换为你的Java版本 -->
                <target>11</target>
                <compilerArgs>
                    <arg>--add-modules</arg>
                    <arg>java.xml.bind</arg>
                </compilerArgs>
            </configuration>
        </plugin>
    </plugins>
</build>

3. 替换代码中的JAXB依赖

若你的signIn方法或WebSecurityConfig中直接调用了DatatypeConverter(比如Base64编解码),可以替换为Java自带的java.util.Base64类,彻底摆脱JAXB依赖:

// 原代码
String encoded = DatatypeConverter.printBase64Binary(data);
byte[] decoded = DatatypeConverter.parseBase64Binary(encoded);

// 替换后
String encoded = Base64.getEncoder().encodeToString(data);
byte[] decoded = Base64.getDecoder().decode(encoded);

4. 清理并重建项目

执行以下Maven命令,清理缓存并重新构建,确保依赖正确生效:

mvn clean install

5. 排查依赖冲突

运行依赖树命令,检查是否有JAXB相关依赖被意外排除:

mvn dependency:tree | grep jaxb

若发现排除情况,在对应依赖中添加<exclusions>取消排除,或调整依赖声明顺序。


内容的提问来源于stack exchange,提问作者denstran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 13:33:12