Camunda页面刷新/登录退出时出现NoSuchMethodError异常求助
Camunda工作流引擎与Gradle构建微服务的
NoSuchMethodError异常问题 问题场景
微服务中使用Camunda作为工作流引擎,采用Gradle构建项目。访问Camunda门户页面、刷新页面或执行登录退出操作时,抛出java.lang.NoSuchMethodError异常,具体栈信息如下:
异常栈日志
java.lang.NoSuchMethodError: 'java.util.Map javax.ws.rs.core.Application.getProperties()' at org.glassfish.jersey.server.ResourceConfig$WrappingResourceConfig.mergeApplications(ResourceConfig.java:1149) at org.glassfish.jersey.server.ResourceConfig$WrappingResourceConfig._setApplication(ResourceConfig.java:1086) at org.glassfish.jersey.server.ResourceConfig.setApplication(ResourceConfig.java:1038) at org.glassfish.jersey.server.ApplicationConfigurator.init(ApplicationConfigurator.java:72) at org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$0(ApplicationHandler.java:294) at java.base/java.util.Arrays$ArrayList.forEach(Arrays.java:4204) at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:294) at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:261) at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311) at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:154) at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:347) at javax.servlet.GenericServlet.init(GenericServlet.java:158) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1164) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1117) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:788) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:128) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.springframework.cloud.sleuth.instrument.web.tomcat.TraceValve.invoke(TraceValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:833) 2022-11-19 15:47:03,931 Shosseini ERROR o.a.c.c.C.[Tomcat].[localhost].[/]:175 - Servlet.init() for servlet [Engine Api] threw exception java.lang.NoSuchMethodError: 'java.util.Map javax.ws.rs.core.Application.getProperties()' at org.glassfish.jersey.server.ResourceConfig$WrappingResourceConfig.mergeApplications(ResourceConfig.java:1149) at org.glassfish.jersey.server.ResourceConfig$WrappingResourceConfig._setApplication(ResourceConfig.java:1086) at org.glassfish.jersey.server.ResourceConfig.setApplication(ResourceConfig.java:1038) at org.glassfish.jersey.server.ApplicationConfigurator.init(ApplicationConfigurator.java:72) at org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$0(ApplicationHandler.java:294) at java.base/java.util.Arrays$ArrayList.forEach(Arrays.java:4204) at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:294) at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:261) at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311) at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:154) at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:347) at javax.servlet.GenericServlet.init(GenericServlet.java:158) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1164) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1117) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:788) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:128) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.springframework.cloud.sleuth.instrument.web.tomcat.TraceValve.invoke(TraceValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:833) 2022-11-19 15:47:03,932 Shosseini ERROR o.a.c.c.C.[.[.[/].[Admin Api]:175 - Allocate exception for servlet [Admin Api] java.lang.NoSuchMethodError: 'java.util.Map javax.ws.rs.core.Application.getProperties()' at org.glassfish.jersey.server.ResourceConfig$WrappingResourceConfig.mergeApplications(ResourceConfig.java:1149) at org.glassfish.jersey.server.ResourceConfig$WrappingResourceConfig._setApplication(ResourceConfig.java:1086) at org.glassfish.jersey.server.ResourceConfig.setApplication(ResourceConfig.java:1038) at org.glassfish.jersey.server.ApplicationConfigurator.init(ApplicationConfigurator.java:72) at org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$0(ApplicationHandler.java:294) at java.base/java.util.Arrays$ArrayList.forEach(Arrays.java:4204) at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:294) at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:261) at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311) at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:154) at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:347) at javax.servlet.GenericServlet.init(GenericServlet.java:158) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1164) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1117) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:788) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:128) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.springframework.cloud.sleuth.instrument.web.tomcat.TraceValve.invoke(TraceValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:833) 2022-11-19 15:47:03,932 Shosseini ERROR o.a.c.c.C.[.[.[/].[Engine Api]:175 - Allocate exception for servlet [Engine Api] java.lang.NoSuchMethodError: 'java.util.Map javax.ws.rs.core.Application.getProperties()' at org.glassfish.jersey.server.ResourceConfig$WrappingResourceConfig.mergeApplications(ResourceConfig.java:1149) at org.glassfish.jersey.server.ResourceConfig$WrappingResourceConfig._setApplication(ResourceConfig.java:1086) at org.glassfish.jersey.server.ResourceConfig.setApplication(ResourceConfig.java:1038) at org.glassfish.jersey.server.ApplicationConfigurator.init(ApplicationConfigurator.java:72) at org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$0(ApplicationHandler.java:294) at java.base/java.util.Arrays$ArrayList.forEach(Arrays.java:4204) at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:294) at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:261) at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311) at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:154) at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:347) at javax.servlet.GenericServlet.init(GenericServlet.java:158) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1164) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1117) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:788) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:128) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.springframework.cloud.sleuth.instrument.web.tomcat.TraceValve.invoke(TraceValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:833) 2022-11-19 15:51:28,593 Shosseini INFO c.n.d.s.r.aws.ConfigClusterResolver:43 - Resolving eureka endpoints via configuration
问题原因
这个异常本质是JAX-RS API版本冲突:javax.ws.rs.core.Application.getProperties()是JAX-RS 2.0及以上版本才有的接口方法,但项目中可能混入了低版本的JAX-RS依赖(比如JAX-RS 1.x的jsr311-api),或者多个依赖引入了不同版本的JAX-RS API,导致类加载时找不到对应方法。
解决步骤
1. 排查依赖冲突
执行Gradle命令拉取完整依赖树,定位冲突的JAX-RS包:
./gradlew dependencies
重点查找javax.ws.rs:javax.ws.rs-api或javax.ws.rs:jsr311-api这类依赖,确认是否有低版本被意外引入。
2. 强制统一JAX-RS版本
在build.gradle中添加配置,强制使用符合Camunda要求的JAX-RS版本(Camunda一般要求2.1及以上):
configurations.all { resolutionStrategy.force 'javax.ws.rs:javax.ws.rs-api:2.1.1' }
3. 排除冲突依赖
如果是Spring Cloud等第三方组件引入了低版本JAX-RS,在对应的依赖声明中排除冲突包:
implementation('org.springframework.cloud:spring-cloud-starter-sleuth') { exclude group: 'javax.ws.rs', module: 'jsr311-api' }
4. 验证版本兼容性
确认Camunda版本与项目使用的Spring Boot/Spring Cloud版本匹配,可查阅Camunda官方文档的兼容性说明。
补充信息
相关截图内容:
- 异常截图:页面访问时弹出500错误,显示核心异常提示
- 截图2:展示项目依赖结构中可能存在的冲突依赖项
- 截图3:显示Camunda门户页面无法正常访问的异常状态
内容的提问来源于stack exchange,提问作者Aziz
相关产品推荐
相关产品推荐

