Tomcat9下Jersey API报NoSuchMethodError:SignatureAlgorithm.getMinKeyLength()
解决方案:JWT
NoSuchMethodError 问题修复 问题根源
你的pom.xml中同时引入了JJWT 0.11.2的拆分模块(jjwt-api/jjwt-impl/jjwt-jackson)和JJWT 0.9.1的聚合包(jjwt),导致版本冲突:
- 0.11.x版本的
Keys.hmacShaKeyFor()方法会调用SignatureAlgorithm.getMinKeyLength()校验密钥强度 - 但0.9.1版本的
SignatureAlgorithm类不存在该方法,类加载器优先加载了旧版本类,因此触发NoSuchMethodError
修复步骤
- 移除冲突的旧版本依赖
删除pom.xml中0.9.1版本的jjwt依赖项,保留0.11.2版本的三个拆分模块即可。修改后的pom.xml依赖片段如下:
<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>0.11.2</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>0.11.2</version> <scope>runtime</scope> <!-- 可选,明确标记为运行时依赖 --> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-jackson</artifactId> <version>0.11.2</version> </dependency>
- 清理并重新构建项目
- 执行Maven命令:
mvn clean install,清理旧依赖缓存并重新构建 - 检查Tomcat的
webapps/你的项目/WEB-INF/lib目录,确保无残留0.9.1版本的jjwt-*.jar文件,如有则手动删除
- 验证修复
重启Tomcat并调用生成JWT的接口,确认错误不再出现
内容的提问来源于stack exchange,提问作者Eric Malalel
相关产品推荐
相关产品推荐

