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

Spring Boot构建JWT令牌时出现DatatypeConverter类未找到异常如何解决

异常产生原因

你使用的jjwt 0.9.1版本依赖javax.xml.bind.DatatypeConverter类实现Base64编码,该类属于JAXB模块:

  • Java 8及更低版本中,JAXB模块是JDK默认内置的,不会出现该异常
  • Java 9及更高版本中,JDK移除了默认内置的JAXB模块,运行时找不到对应类就会抛出NoClassDefFoundError

解决方案

方案一:保留jjwt 0.9.1版本,手动补充JAXB依赖

Maven项目在pom.xml中添加以下依赖:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.1</version>
    <scope>runtime</scope>
</dependency>
<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>

Gradle项目在build.gradle中添加:

implementation 'javax.xml.bind:jaxb-api:2.3.1'
runtimeOnly 'com.sun.xml.bind:jaxb-impl:2.3.1'
implementation 'com.sun.xml.bind:jaxb-core:2.3.0.1'
implementation 'javax.activation:activation:1.1.1'

方案二(推荐):升级jjwt到最新稳定版

jjwt从0.10.0版本开始就移除了对JAXB的依赖,自身实现了编解码逻辑,无需额外引入JAXB包,适配所有Java 8及以上版本。
Maven引入新版jjwt依赖如下:

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-api</artifactId>
    <version>0.11.5</version>
</dependency>
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-impl</artifactId>
    <version>0.11.5</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-jackson</artifactId>
    <version>0.11.5</version>
    <scope>runtime</scope>
</dependency>

升级后原有生成、解析JWT的代码逻辑不需要改动,可直接兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:36:03