Spring Boot 3.2.x + Drools 7.73 + JDK 21: java.lang.ClassNotFoundException: java.lang.Compiler - Stack Overflow

I am trying to create a generic code to initialize a Kie container per BPMN business process.I have st

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
Add a comment  | 

2 Answers 2

Reset to default 0

The 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.

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744257697a4565479.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信