升级Java 17后org.camunda.bpm.engine.RuntimeService Bean找不到问题
项目升级Java 17后Camunda RuntimeService依赖注入失败解决
问题描述
项目升级至Java 17后,服务启动时触发依赖注入错误:CallbackHandlerService的构造函数无法找到org.camunda.bpm.engine.RuntimeService类型的Bean,即使添加@Autowired(required=true)注解也无法解决。
错误日志:
Parameter 0 of constructor in org.onap.so.bpmn.core.workflow.service.CallbackHandlerService required a bean of type 'org.camunda.bpm.engine.RuntimeService' that could not be found. The injection point has the following annotations: - @org.springframework.beans.factory.annotation.Autowired(required=true) Action: Consider defining a bean of type 'org.camunda.bpm.engine.RuntimeService' in your configuration
解决方案
适配Camunda与Java 17的版本兼容
Java 17需要Camunda 7.18及以上版本支持,检查项目依赖中的Camunda Spring Boot Starter版本,确保使用兼容Java 17的版本。例如Maven依赖配置:<dependency> <groupId>org.camunda.bpm.springboot</groupId> <artifactId>camunda-bpm-spring-boot-starter</artifactId> <version>7.20.0</version> <!-- 该版本适配Java 17及Spring Boot 2.7.x --> </dependency>确保Spring Boot版本与Camunda匹配
Java 17对应Spring Boot 2.6+或3.x版本,需保证Camunda Starter与Spring Boot版本兼容:- Camunda 7.18-7.20适配Spring Boot 2.7.x
- Camunda 8.x适配Spring Boot 3.x
检查Spring组件扫描范围
若项目自定义了@ComponentScan注解,需确保未排除Camunda的自动配置包。可在启动类中明确包含Camunda相关包:@SpringBootApplication(scanBasePackages = {"org.onap.so", "org.camunda.bpm.springboot"}) public class SoApplication { public static void main(String[] args) { SpringApplication.run(SoApplication.class, args); } }手动注册RuntimeService Bean(自动配置失效时)
如果Camunda的自动配置未生效,可在配置类中手动创建RuntimeService Bean:@Configuration public class CamundaBeanConfig { @Bean public RuntimeService runtimeService(ProcessEngine processEngine) { return processEngine.getRuntimeService(); } }验证多模块项目的依赖传递
若为多模块项目,确认包含Camunda Starter的模块已被当前服务模块正确依赖,避免依赖缺失导致Bean无法生成。
内容的提问来源于stack exchange,提问作者Shubham Shekhar
相关产品推荐
相关产品推荐

