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

Java 21构建Maven项目时出现io/jsonwebtoken非法参数异常

解决Maven构建时的IllegalArgumentException: Invalid descriptor错误

错误信息

java.lang.IllegalArgumentException: Invalid descriptor: [io/jsonwebtoken/JwtBuilder0org/springframework/security/core/AuthenticationgetNameclaimio/jsonwebtoken/securit

问题原因

这个错误是字节码编译或增强过程中出现损坏导致的,结合你的依赖配置,大概率是以下情况之一:

  • Spring Boot依赖版本不一致引发的冲突
  • Lombok、Spring DevTools等字节码增强工具与JJWT库的兼容性问题
  • Maven本地缓存的损坏依赖或编译产物导致的异常

解决步骤

1. 清理Maven缓存并强制更新依赖

先清理项目编译产物和本地仓库缓存,重新构建:

mvn clean install -U

-U参数会强制刷新所有依赖,避免缓存的损坏文件影响构建。

2. 统一Spring Boot所有依赖版本

你的spring-boot-starter-mail指定了3.3.3版本,但其他Spring Boot Starter依赖未指定版本,可能导致版本不一致。添加依赖管理节点统一版本:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>3.3.3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

然后删除spring-boot-starter-mail中的<version>标签,让它继承统一版本。

3. 排查字节码增强工具冲突

暂时禁用Spring DevTools和Lombok,验证是否能正常构建:

  • 注释掉spring-boot-devtools依赖
  • 注释掉lombok依赖,同时临时替换代码中的Lombok注解(比如把@Data换成手动编写getter/setter)
    如果构建成功,再逐个恢复依赖定位问题。如果是Lombok导致的冲突,显式指定兼容的Lombok版本(Spring Boot 3.3.3推荐用1.18.30+版本):
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.34</version>
    <optional>true</optional>
</dependency>

4. 确认JDK版本与JJWT兼容

JJWT 0.12.x要求JDK 17及以上,确保项目编译版本符合要求,在pom.xml中添加:

<properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
</properties>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:45:00