You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

集成Kogito的Quarkus微服务Native模式启动失败:MVEL编译不支持

Kogito集成Quarkus Native模式启动失败:MVEL编译不支持

错误日志

2024-06-06 07:16:59,136 ERROR [io.qua.run.Application] (main) Failed to start application (with profile [dev]): java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
at io.quarkus.runtime.Application.start(Application.java:101)
at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:111)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:124)
at io.quarkus.runner.GeneratedMain.main(Unknown Source)
Caused by: java.lang.UnsupportedOperationException: MVEL compilation is not supported in native image
at org.jbpm.workflow.instance.impl.MVELProcessHelper.lambda$static$1(MVELProcessHelper.java:40)
at org.jbpm.workflow.instance.impl.MVELProcessHelper.compileExpression(MVELProcessHelper.java:57)
at org.jbpm.workflow.core.impl.OutputExpressionAssignment.<init>(OutputExpressionAssignment.java:42)
at org.jbpm.workflow.core.impl.DataAssociation.buildInterpretedAssignment(DataAssociation.java:56)
at java.base@17.0.11/java.util.Arrays$ArrayList.forEach(Arrays.java:4204)
at org.jbpm.workflow.core.impl.DataAssociation.<init>(DataAssociation.java:46)
at com.epm.ticket.workflow.TicketWorkflowProcess.process(TicketWorkflowProcess.java:1116)
at org.kie.kogito.process.impl.AbstractProcess.get(AbstractProcess.java:250)
at org.kogito.process.impl.AbstractProcess.activate(AbstractProcess.java:192)
at com.epm.ticket.workflow.TicketWorkflowProcess.<init>(TicketWorkflowProcess.java:23)
at com.epm.ticket.workflow.TicketWorkflowProcess_Bean.doCreate(Unknown Source)
at com.epm.ticket.workflow.TicketWorkflowProcess_Bean.create(Unknown Source)
at com.epm.ticket.workflow.TicketWorkflowProcess_Bean.create(Unknown Source)
at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:113)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:37)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:34)
at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:26)
at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:34)
at io.quarkus.arc.impl.ClientProxies.getApplicationScopedDelegate(ClientProxies.java:21)
at com.epm.ticket.workflow.TicketWorkflowProcess_ClientProxy.arc$delegate(Unknown Source)
at com.epm.ticket.workflow.TicketWorkflowProcess_ClientProxy.arc_contextualInstance(Unknown Source)
at com.epm.ticket.workflow.TicketWorkflowProcess_Observer_Synthetic_1e642942b2e0ecd00ec189c20062bdec9100a46d.notify(Unknown Source)
at io.quarkus.arc.impl.EventImpl$Notifier.notifyObservers(EventImpl.java:346)
at io.quarkus.arc.impl.EventImpl$Notifier.notify(EventImpl.java:328)
at io.quarkus.arc.impl.EventImpl.fire(EventImpl.java:82)
at io.quarkus.arc.runtime.ArcRecorder.fireLifecycleEvent(ArcRecorder.java:155)
at io.quarkus.arc.runtime.ArcRecorder.handleLifecycleEvents(ArcRecorder.java:106)
at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent1144526294.deploy_0(Unknown Source)
at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent1144526294.deploy(Unknown Source)
... 7 more

环境配置

  • Quarkus版本:3.2.11.Final-redhat-00001
  • Kogito版本:2.44.0.Alpha
  • Java版本:17

问题原因及解决方案

核心原因

MVEL表达式的运行时编译在GraalVM Native Image环境中不被支持——Native镜像构建时会提前完成所有代码的编译和静态分析,运行时无法动态生成新的字节码,而你的流程中使用了需要运行时编译的MVEL表达式。

解决办法

  1. 切换到FEEL表达式
    Kogito推荐使用FEEL作为默认表达式语言,它在Native镜像构建阶段会被提前编译,完全兼容Native模式。将流程定义中的所有MVEL表达式替换为FEEL语法即可。

  2. 启用MVEL预编译
    如果必须保留MVEL表达式,在application.properties中添加配置:kogito.processes.mvel.precompile=true,确保Kogito在构建Native镜像时提前编译所有MVEL表达式,避免运行时编译操作。

  3. 排查动态表达式
    检查TicketWorkflowProcess.java第1116行对应的流程逻辑,确认是否存在动态生成的MVEL表达式——这类表达式无法被预编译,必须替换为静态可分析的表达式或FEEL语法。

  4. 验证版本兼容性
    当前使用的Quarkus(3.2.x)和Kogito(2.44.0.Alpha)版本组合可能存在兼容性问题,建议升级Kogito到与Quarkus 3.2.x匹配的稳定版本(如Kogito 1.44.x系列),Alpha版本可能存在Native模式的未修复Bug。


内容的提问来源于stack exchange,提问作者Flo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 00:27:33