admin管理员组文章数量:1401626
I am trying to create a generic code to initialize a Kie container per BPMN business process.
I have stored the process in DB as XML. Need to enable the deploy functionality of BPMN to Kie container to execute that specific business process instances.
I am using Spring Boot 3.2.x and Gradle with Java 21. Here are the settings:
Gradle Dependencies:
implementation '.kie:kie-api:7.73.0.Final'
implementation '.kie:kie-dmn-api:7.73.0.Final'
implementation '.drools:drools-core:7.73.0.Final'
implementation '.jbpm:jbpm-flow:7.73.0.Final'
implementation(".jbpm:jbpm-bpmn2:7.73.0.Final")
implementation(".drools:drools-compiler:7.73.0.Final")
implementation '.jbpm:jbpm-flow-builder:7.73.0.Final'
implementation '.kie:kie-spring:7.73.0.Final'
Sample Code:
BpmnProcess process = bpmnProcessRepository.findByProcessId(processId);
if (process != null) {
String bpmnProcess = StringEscapeUtils.unescapeCsv(process.getBpmnXml());
BPMN2ProcessProvider provider = BPMN2ProcessFactory.getBPMN2ProcessProvider();
if (provider == null) {
throw new IllegalStateException("BPMN2ProcessProvider is not initialized. Ensure jbpm-flow-builder is on the classpath.");
} else {
System.out.println("BPMN2ProcessProvider is properly initialized.");
}
KieServices kieServices = KieServices.Factory.get();
String groupId = "com.example.kie";
String artifactId = "dynamic-process";
String version = "1.0.0";
ReleaseId releaseId = kieServices.newReleaseId(groupId, artifactId, version);
KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
kieFileSystem.write("src/main/resources/process.bpmn", bpmnProcess);
kieServices.newKieBuilder(kieFileSystem).buildAll();
kieContainer = kieServices.newKieContainer(releaseId);
}
Problem is: BPMN2ProcessProvider is always initialized as null and I couldn't find any clear documentation about it. Please share any working sample to use dynamic BPMN formats with JBPM
Error log:
2025-03-24T12:21:26.365+05:30 ERROR 22008 --- [workflow-engine-core] [nio-8080-exec-1] o.k.a.i.utils.ServiceDiscoveryImpl : Loading failed because Cannot create instance of class: .jbpm.bpmn2.BPMN2ProcessProviderImpl
2025-03-24T12:21:36.310+05:30 ERROR 22008 --- [workflow-engine-core] [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed: java.lang.ExceptionInInitializerError] with root cause
java.lang.ClassNotFoundException: java.lang.Compiler
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:528) ~[na:na]
at .mvel2piler.AbstractParser.setupParser(AbstractParser.java:215) ~[mvel2-2.4.14.Final.jar:na]
at .mvel2piler.AbstractParser.<clinit>(AbstractParser.java:153) ~[mvel2-2.4.14.Final.jar:na]
at .mvel2.MVELpileExpression(MVEL.java:831) ~[mvel2-2.4.14.Final.jar:na]
at .mvel2.templates.res.CompiledDeclareNode.<init>(CompiledDeclareNode.java:42) ~[mvel2-2.4.14.Final.jar:na]
at .mvel2.templates.TemplateCompilerpileFrom(TemplateCompiler.java:185) ~[mvel2-2.4.14.Final.jar:na]
at .mvel2.templates.TemplateCompilerpile(TemplateCompiler.java:82) ~[mvel2-2.4.14.Final.jar:na]
at .mvel2.templates.TemplateCompilerpileTemplate(TemplateCompiler.java:414) ~[mvel2-2.4.14.Final.jar:na]
at .mvel2.templates.TemplateCompilerpileTemplate(TemplateCompiler.java:405) ~[mvel2-2.4.14.Final.jar:na]
at .mvel2.templates.TemplateCompilerpileTemplate(TemplateCompiler.java:401) ~[mvel2-2.4.14.Final.jar:na]
at .jbpm.process.builder.dialect.java.AbstractJavaProcessBuilder.<clinit>(AbstractJavaProcessBuilder.java:46) ~[jbpm-flow-builder-7.73.0.Final.jar:7.73.0.Final]
at .jbpm.process.builder.dialect.java.JavaProcessDialect.<clinit>(JavaProcessDialect.java:38) ~[jbpm-flow-builder-7.73.0.Final.jar:7.73.0.Final]
at .jbpm.process.builder.dialect.ProcessDialectRegistry.<clinit>(ProcessDialectRegistry.java:35) ~[jbpm-flow-builder-7.73.0.Final.jar:7.73.0.Final]
at .jbpm.bpmn2.BPMN2ProcessProviderImpl.<clinit>(BPMN2ProcessProviderImpl.java:32) ~[jbpm-bpmn2-7.73.0.Final.jar:7.73.0.Final]
at java.base/java.lang.Class.forName0(Native Method) ~[na:na]
at java.base/java.lang.Class.forName(Class.java:578) ~[na:na]
at java.base/java.lang.Class.forName(Class.java:557) ~[na:na]
at .kie.api.internal.utils.ServiceDiscoveryImpl.newInstance(ServiceDiscoveryImpl.java:162) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .kie.api.internal.utils.ServiceDiscoveryImpl.processKieService(ServiceDiscoveryImpl.java:146) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .kie.api.internal.utils.ServiceDiscoveryImpl.registerConfs(ServiceDiscoveryImpl.java:123) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .kie.api.internal.utils.ServiceDiscoveryImpl.lambda$getServices$1(ServiceDiscoveryImpl.java:105) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at java.base/java.util.Optional.ifPresent(Optional.java:178) ~[na:na]
at .kie.api.internal.utils.ServiceDiscoveryImpl.getServices(ServiceDiscoveryImpl.java:103) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .kie.api.internal.utils.ServiceRegistry$Impl.<init>(ServiceRegistry.java:62) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .drools.dynamic.DynamicServiceRegistrySupplier$LazyHolder.<clinit>(DynamicServiceRegistrySupplier.java:27) ~[drools-core-dynamic-7.73.0.Final.jar:7.73.0.Final]
at .drools.dynamic.DynamicServiceRegistrySupplier.get(DynamicServiceRegistrySupplier.java:32) ~[drools-core-dynamic-7.73.0.Final.jar:7.73.0.Final]
at .drools.dynamic.DynamicServiceRegistrySupplier.get(DynamicServiceRegistrySupplier.java:23) ~[drools-core-dynamic-7.73.0.Final.jar:7.73.0.Final]
at .kie.api.internal.utils.ServiceRegistry$Impl.getServiceRegistry(ServiceRegistry.java:90) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .kie.api.internal.utils.ServiceRegistry$ServiceRegistryHolder.<clinit>(ServiceRegistry.java:49) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .kie.api.internal.utils.ServiceRegistry.getInstance(ServiceRegistry.java:41) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .kie.api.internal.utils.ServiceRegistry.getService(ServiceRegistry.java:37) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .droolspilerpiler.BPMN2ProcessFactory$LazyHolder.<clinit>(BPMN2ProcessFactory.java:25) ~[drools-compiler-7.73.0.Final.jar:7.73.0.Final]
at .droolspilerpiler.BPMN2ProcessFactory.getBPMN2ProcessProvider(BPMN2ProcessFactory.java:33) ~[drools-compiler-7.73.0.Final.jar:7.73.0.Final]
at com.ram.m.suite.workflow_engine.kie.Kie.kieBase(Kie.java:61) ~[main/:na]
at com.ram.m.suite.workflow_engine.controller.BpmnProcessController.deployProcess(BpmnProcessController.java:54) ~[main/:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
at .springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:257) ~[spring-web-6.2.2.jar:6.2.2]
at .springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190) ~[spring-web-6.2.2.jar:6.2.2]
at .springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.2.2.jar:6.2.2]
at .springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986) ~[spring-webmvc-6.2.2.jar:6.2.2]
at .springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891) ~[spring-webmvc-6.2.2.jar:6.2.2]
at .springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.2.2.jar:6.2.2]
at .springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1088) ~[spring-webmvc-6.2.2.jar:6.2.2]
at .springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:978) ~[spring-webmvc-6.2.2.jar:6.2.2]
at .springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[spring-webmvc-6.2.2.jar:6.2.2]
at .springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) ~[spring-webmvc-6.2.2.jar:6.2.2]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) ~[tomcat-embed-core-10.1.34.jar:6.0]
at .springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.2.2.jar:6.2.2]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.34.jar:6.0]
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.34.jar:10.1.34]
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.2.2.jar:6.2.2]
at .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.2.jar:6.2.2]
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.2.2.jar:6.2.2]
at .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.2.jar:6.2.2]
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.2.2.jar:6.2.2]
at .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.2.jar:6.2.2]
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.tomcat.util.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.tomcat.util.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at java.base/java.lang.Thread.run(Thread.java:1575) ~[na:na]
I am trying to create a generic code to initialize a Kie container per BPMN business process.
I have stored the process in DB as XML. Need to enable the deploy functionality of BPMN to Kie container to execute that specific business process instances.
I am using Spring Boot 3.2.x and Gradle with Java 21. Here are the settings:
Gradle Dependencies:
implementation '.kie:kie-api:7.73.0.Final'
implementation '.kie:kie-dmn-api:7.73.0.Final'
implementation '.drools:drools-core:7.73.0.Final'
implementation '.jbpm:jbpm-flow:7.73.0.Final'
implementation(".jbpm:jbpm-bpmn2:7.73.0.Final")
implementation(".drools:drools-compiler:7.73.0.Final")
implementation '.jbpm:jbpm-flow-builder:7.73.0.Final'
implementation '.kie:kie-spring:7.73.0.Final'
Sample Code:
BpmnProcess process = bpmnProcessRepository.findByProcessId(processId);
if (process != null) {
String bpmnProcess = StringEscapeUtils.unescapeCsv(process.getBpmnXml());
BPMN2ProcessProvider provider = BPMN2ProcessFactory.getBPMN2ProcessProvider();
if (provider == null) {
throw new IllegalStateException("BPMN2ProcessProvider is not initialized. Ensure jbpm-flow-builder is on the classpath.");
} else {
System.out.println("BPMN2ProcessProvider is properly initialized.");
}
KieServices kieServices = KieServices.Factory.get();
String groupId = "com.example.kie";
String artifactId = "dynamic-process";
String version = "1.0.0";
ReleaseId releaseId = kieServices.newReleaseId(groupId, artifactId, version);
KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
kieFileSystem.write("src/main/resources/process.bpmn", bpmnProcess);
kieServices.newKieBuilder(kieFileSystem).buildAll();
kieContainer = kieServices.newKieContainer(releaseId);
}
Problem is: BPMN2ProcessProvider is always initialized as null and I couldn't find any clear documentation about it. Please share any working sample to use dynamic BPMN formats with JBPM
Error log:
2025-03-24T12:21:26.365+05:30 ERROR 22008 --- [workflow-engine-core] [nio-8080-exec-1] o.k.a.i.utils.ServiceDiscoveryImpl : Loading failed because Cannot create instance of class: .jbpm.bpmn2.BPMN2ProcessProviderImpl
2025-03-24T12:21:36.310+05:30 ERROR 22008 --- [workflow-engine-core] [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed: java.lang.ExceptionInInitializerError] with root cause
java.lang.ClassNotFoundException: java.lang.Compiler
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:528) ~[na:na]
at .mvel2piler.AbstractParser.setupParser(AbstractParser.java:215) ~[mvel2-2.4.14.Final.jar:na]
at .mvel2piler.AbstractParser.<clinit>(AbstractParser.java:153) ~[mvel2-2.4.14.Final.jar:na]
at .mvel2.MVELpileExpression(MVEL.java:831) ~[mvel2-2.4.14.Final.jar:na]
at .mvel2.templates.res.CompiledDeclareNode.<init>(CompiledDeclareNode.java:42) ~[mvel2-2.4.14.Final.jar:na]
at .mvel2.templates.TemplateCompilerpileFrom(TemplateCompiler.java:185) ~[mvel2-2.4.14.Final.jar:na]
at .mvel2.templates.TemplateCompilerpile(TemplateCompiler.java:82) ~[mvel2-2.4.14.Final.jar:na]
at .mvel2.templates.TemplateCompilerpileTemplate(TemplateCompiler.java:414) ~[mvel2-2.4.14.Final.jar:na]
at .mvel2.templates.TemplateCompilerpileTemplate(TemplateCompiler.java:405) ~[mvel2-2.4.14.Final.jar:na]
at .mvel2.templates.TemplateCompilerpileTemplate(TemplateCompiler.java:401) ~[mvel2-2.4.14.Final.jar:na]
at .jbpm.process.builder.dialect.java.AbstractJavaProcessBuilder.<clinit>(AbstractJavaProcessBuilder.java:46) ~[jbpm-flow-builder-7.73.0.Final.jar:7.73.0.Final]
at .jbpm.process.builder.dialect.java.JavaProcessDialect.<clinit>(JavaProcessDialect.java:38) ~[jbpm-flow-builder-7.73.0.Final.jar:7.73.0.Final]
at .jbpm.process.builder.dialect.ProcessDialectRegistry.<clinit>(ProcessDialectRegistry.java:35) ~[jbpm-flow-builder-7.73.0.Final.jar:7.73.0.Final]
at .jbpm.bpmn2.BPMN2ProcessProviderImpl.<clinit>(BPMN2ProcessProviderImpl.java:32) ~[jbpm-bpmn2-7.73.0.Final.jar:7.73.0.Final]
at java.base/java.lang.Class.forName0(Native Method) ~[na:na]
at java.base/java.lang.Class.forName(Class.java:578) ~[na:na]
at java.base/java.lang.Class.forName(Class.java:557) ~[na:na]
at .kie.api.internal.utils.ServiceDiscoveryImpl.newInstance(ServiceDiscoveryImpl.java:162) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .kie.api.internal.utils.ServiceDiscoveryImpl.processKieService(ServiceDiscoveryImpl.java:146) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .kie.api.internal.utils.ServiceDiscoveryImpl.registerConfs(ServiceDiscoveryImpl.java:123) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .kie.api.internal.utils.ServiceDiscoveryImpl.lambda$getServices$1(ServiceDiscoveryImpl.java:105) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at java.base/java.util.Optional.ifPresent(Optional.java:178) ~[na:na]
at .kie.api.internal.utils.ServiceDiscoveryImpl.getServices(ServiceDiscoveryImpl.java:103) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .kie.api.internal.utils.ServiceRegistry$Impl.<init>(ServiceRegistry.java:62) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .drools.dynamic.DynamicServiceRegistrySupplier$LazyHolder.<clinit>(DynamicServiceRegistrySupplier.java:27) ~[drools-core-dynamic-7.73.0.Final.jar:7.73.0.Final]
at .drools.dynamic.DynamicServiceRegistrySupplier.get(DynamicServiceRegistrySupplier.java:32) ~[drools-core-dynamic-7.73.0.Final.jar:7.73.0.Final]
at .drools.dynamic.DynamicServiceRegistrySupplier.get(DynamicServiceRegistrySupplier.java:23) ~[drools-core-dynamic-7.73.0.Final.jar:7.73.0.Final]
at .kie.api.internal.utils.ServiceRegistry$Impl.getServiceRegistry(ServiceRegistry.java:90) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .kie.api.internal.utils.ServiceRegistry$ServiceRegistryHolder.<clinit>(ServiceRegistry.java:49) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .kie.api.internal.utils.ServiceRegistry.getInstance(ServiceRegistry.java:41) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .kie.api.internal.utils.ServiceRegistry.getService(ServiceRegistry.java:37) ~[kie-api-7.73.0.Final.jar:7.73.0.Final]
at .droolspilerpiler.BPMN2ProcessFactory$LazyHolder.<clinit>(BPMN2ProcessFactory.java:25) ~[drools-compiler-7.73.0.Final.jar:7.73.0.Final]
at .droolspilerpiler.BPMN2ProcessFactory.getBPMN2ProcessProvider(BPMN2ProcessFactory.java:33) ~[drools-compiler-7.73.0.Final.jar:7.73.0.Final]
at com.ram.m.suite.workflow_engine.kie.Kie.kieBase(Kie.java:61) ~[main/:na]
at com.ram.m.suite.workflow_engine.controller.BpmnProcessController.deployProcess(BpmnProcessController.java:54) ~[main/:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
at .springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:257) ~[spring-web-6.2.2.jar:6.2.2]
at .springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190) ~[spring-web-6.2.2.jar:6.2.2]
at .springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.2.2.jar:6.2.2]
at .springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986) ~[spring-webmvc-6.2.2.jar:6.2.2]
at .springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891) ~[spring-webmvc-6.2.2.jar:6.2.2]
at .springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.2.2.jar:6.2.2]
at .springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1088) ~[spring-webmvc-6.2.2.jar:6.2.2]
at .springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:978) ~[spring-webmvc-6.2.2.jar:6.2.2]
at .springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[spring-webmvc-6.2.2.jar:6.2.2]
at .springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) ~[spring-webmvc-6.2.2.jar:6.2.2]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) ~[tomcat-embed-core-10.1.34.jar:6.0]
at .springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.2.2.jar:6.2.2]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.34.jar:6.0]
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.34.jar:10.1.34]
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.2.2.jar:6.2.2]
at .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.2.jar:6.2.2]
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.2.2.jar:6.2.2]
at .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.2.jar:6.2.2]
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.2.2.jar:6.2.2]
at .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.2.jar:6.2.2]
at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.tomcat.util.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.tomcat.util.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at .apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at java.base/java.lang.Thread.run(Thread.java:1575) ~[na:na]
Share
Improve this question
edited Mar 24 at 7:49
Nitish Bhardwaj
asked Mar 24 at 6:31
Nitish BhardwajNitish Bhardwaj
1,19313 silver badges31 bronze badges
2 Answers
Reset to default 0The thing is that java.lang.Compiler
class was completely removed from JDK 21
. Also, it was deprecated in JDK 9
.
Workaround: Try with JDK 17
as Spring Boot 3.x supports JDK 17
version minimum. It still has the deprecated java.lang.Compiler
class.
Also, you are using Drools 7.x
version. I was reading this thread
. I guess you are not alone who is facing this issue with 7.73.0.Final
. Try the higher version of Drools to see if it works.
Link this enhancement story: https://bugs.openjdk./browse/JDK-8205129
See if this helps.
Since I can't comment yet, I'll add an answer, which might be helpful. I ran into "java.lang.Compiler" error too, but was using Maven. Wanted to build app with older Java version (Java 8) than my CI system runtime (Java 21) and had to wrap kie-maven-plugin execution into exec-maven-plugin with specific executable and arguments to get it working.
本文标签: Spring Boot 32xDrools 773JDK 21 javalangClassNotFoundException javalangCompilerStack Overflow
版权声明:本文标题:Spring Boot 3.2.x + Drools 7.73 + JDK 21: java.lang.ClassNotFoundException: java.lang.Compiler - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744257697a2597561.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论