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

升级jsonwebtoken至0.12.5后遇包不存在错误,求解决

问题解决方案

问题原因

  1. 依赖作用域限制:jjwt-impl的scope设为runtime,该依赖仅在运行时生效,编译阶段不会将其类暴露给业务代码,因此编译时找不到io.jsonwebtoken.impl.compression包下的类。
  2. 内部实现类不允许直接依赖:io.jsonwebtoken.impl包下的类属于JJWT的内部实现细节,官方明确禁止直接依赖这些类。0.12.x版本对内部结构做了调整,直接导入这类内部类必然触发编译错误。

解决步骤

1. 替换导入语句

删除原有的内部类导入,改用JJWT公开API层的类:

import io.jsonwebtoken.CompressionCodec;
import io.jsonwebtoken.CompressionCodecs;

2. 使用API提供的压缩实例

通过CompressionCodecs的静态方法获取Gzip压缩编解码实例,替代直接实例化内部类的写法:

// 示例:生成JWT时启用Gzip压缩
String jwt = Jwts.builder()
    .setSubject("your-subject")
    .compressWith(CompressionCodecs.GZIP) // 使用API提供的GZIP实例
    .signWith(SignatureAlgorithm.HS256, "your-secret-key")
    .compact();

3. 保留现有Maven依赖配置

你当前的Maven依赖配置是合规的,无需调整:

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

jjwt-impl和jjwt-jackson的runtime作用域是合理的,它们会在运行时自动加载,不影响编译逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:10:02