求助解决NoSuchMethodError: GlassFish Jersey方法缺失问题
Jersey NoSuchMethodError 问题排查求助
我遇到了如下错误,已尝试从所有依赖中排除Jersey并同步版本,但问题仍未解决。我已排查了所有能想到的Jersey相关依赖,请问FasterXML会不会是问题根源?
错误信息片段
2023-08-11 01:28:58,514 ERROR Executor task launch worker for task 49576 com.company.companyorg.ps.companyapp.srf.money.merchantchange.handler.MerchantChangeHandler$ - Failed to extract merchant profile for merchantAccountNumber: 123123123123123 java.lang.NoSuchMethodError: org.glassfish.jersey.internal.LocalizationMessages.WARNING_PROPERTIES()Ljava/lang/String; at org.glassfish.jersey.internal.config.SystemPropertiesConfigurationModel.getProperties(SystemPropertiesConfigurationModel.java:120) at org.glassfish.jersey.internal.config.SystemPropertiesConfigurationProvider.getProperties(SystemPropertiesConfigurationProvider.java:29) at org.glassfish.jersey.internal.config.ExternalPropertiesConfigurationFactory.readExternalPropertiesMap(ExternalPropertiesConfigurationFactory.java:55)
(注:存在完整堆栈跟踪、依赖树、handler pom.xml、runner pom.xml相关信息)
问题分析与排查建议
- 错误本质:
NoSuchMethodError核心原因是Jersey内部类版本不兼容——编译时依赖的LocalizationMessages类包含WARNING_PROPERTIES()方法,但运行时加载的版本缺失该方法,说明依赖树中存在多版本Jersey核心包冲突。 - FasterXML的关联性:FasterXML(如Jackson)是Jersey常用的JSON处理依赖,但不会直接引发该错误,此异常完全是Jersey内部类的方法缺失导致,和FasterXML无直接关联。
- 排查方向:
- 统一版本锁定:在项目根pom的
<dependencyManagement>中声明所有Jersey模块(如jersey-common、jersey-server、jersey-client等)的统一版本,强制所有依赖继承该版本,阻断多版本引入。 - 精准筛选依赖:执行命令
mvn dependency:tree -Dincludes=org.glassfish.jersey,输出所有Jersey相关依赖的引入路径,定位是否有第三方依赖间接引入了低版本Jersey。 - 检查运行时类路径:解压部署包(如jar/war),查看
BOOT-INF/lib或WEB-INF/lib下的Jersey jar包,确认是否存在不同版本的核心包(如同时存在jersey-common-2.25.jar和jersey-common-2.35.jar)。 - 清理依赖缓存:执行
mvn clean install -U,强制更新本地仓库依赖,避免缓存的损坏jar包导致版本异常。
- 统一版本锁定:在项目根pom的
内容的提问来源于stack exchange,提问作者sojim2
相关产品推荐
相关产品推荐

