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

Spring Boot项目中auth0-spring-security-api与java-jwt依赖冲突求助

解决Auth0 Spring Security API与Java-JWT版本冲突问题

这个问题我之前也踩过坑,确实是版本不兼容导致的依赖冲突!你手动引入的java-jwt:3.8.1和auth0-spring-security-api:1.2.1自带的java-jwt版本不匹配,才会抛出NoSuchMethodError——因为com.auth0.jwt.interfaces.Verification.withIssuer()方法的签名在不同版本中发生了变化,旧版的Spring Security适配代码找不到新版JWT库的方法。

下面是具体的解决方案:

方案1:移除手动引入的Java-JWT依赖

auth0-spring-security-api本身已经内置了适配好的java-jwt依赖,你完全不需要单独引入。直接删除pom.xml中这段代码:

<dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>3.8.1</version>
</dependency>

这样项目会自动使用auth0-spring-security-api:1.2.1自带的兼容版本,既可以正常校验令牌,也能使用JWT类(只要用的是该版本提供的API)。

方案2:强制统一依赖版本(若必须保留Java-JWT依赖)

如果你因为业务需求必须单独引入java-jwt(比如需要用它生成令牌),那就要确保整个项目使用同一版本的java-jwt。步骤如下:

  1. 先查询auth0-spring-security-api:1.2.1依赖的java-jwt版本:
    执行Maven命令查看依赖树:
    mvn dependency:tree
    
    找到com.auth0:java-jwt对应的版本(比如auth0-spring-security-api:1.2.1默认依赖的是3.4.0)。
  2. 在pom.xml的dependencyManagement块中强制指定该版本:
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.auth0</groupId>
                <artifactId>java-jwt</artifactId>
                <version>3.4.0</version> <!-- 替换为查询到的兼容版本 -->
            </dependency>
        </dependencies>
    </dependencyManagement>
    
  3. 保留你的java-jwt依赖,但去掉版本号(会自动使用dependencyManagement中指定的版本):
    <dependency>
        <groupId>com.auth0</groupId>
        <artifactId>java-jwt</artifactId>
    </dependency>
    

方案3:升级Auth0 Spring Security API到兼容版本

如果你的业务必须使用java-jwt:3.8.1,可以尝试升级auth0-spring-security-api到支持该版本的最新兼容版。你可以查看Auth0官方的版本兼容说明,找到和java-jwt:3.8.1匹配的auth0-spring-security-api版本,替换pom中的依赖版本即可。

最后验证

修改完成后,清理并重新构建项目:

mvn clean install -U

重启Spring Boot应用,验证令牌校验和JWT类的使用是否都恢复正常。

内容的提问来源于stack exchange,提问作者Marco De Simone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:34:15