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

Spring/Optaplanner应用报错:未导入Truth Maintenance System

Spring/OptaPlanner应用启动报错:缺少drools-tms依赖

环境信息

  • OptaPlanner版本:8.19.0.Final
  • Spring Boot版本:2.2.7.RELEASE

错误提示

你正在尝试使用真值维护系统(TMS)但未引入相关依赖,请将org.drools:drools-tms模块添加到类路径中。

完整报错堆栈

Caused by: java.lang.IllegalStateException: There is an error in a scoreDrl or scoreDrlFile.
2022-10-24T20:49:11.164109+00:00 app[web.1]: at org.optaplanner.constraint.drl.AbstractDrlScoreDirectorFactoryService.buildScoreDirectorFactory(AbstractDrlScoreDirectorFactoryService.java:61)
2022-10-24T20:49:11.164109+00:00 app[web.1]: at org.optaplanner.constraint.drl.DrlScoreDirectorFactoryService.lambda$buildScoreDirectorFactory$0(DrlScoreDirectorFactoryService.java:47)
2022-10-24T20:49:11.164109+00:00 app[web.1]: at org.optaplanner.core.impl.score.director.ScoreDirectorFactoryFactory.decideMultipleScoreDirectorFactories(ScoreDirectorFactoryFactory.java:137)
2022-10-24T20:49:11.164109+00:00 app[web.1]: at org.optaplanner.core.impl.score.director.ScoreDirectorFactoryFactory.buildScoreDirectorFactory(ScoreDirectorFactoryFactory.java:55)
2022-10-24T20:49:11.164110+00:00 app[web.1]: at org.optaplanner.core.impl.solver.DefaultSolverFactory.buildScoreDirectorFactory(DefaultSolverFactory.java:177)
2022-10-24T20:49:11.164110+00:00 app[web.1]: at org.optaplanner.core.impl.solver.DefaultSolverFactory.<init>(DefaultSolverFactory.java:87)
2022-10-24T20:49:11.164110+00:00 app[web.1]: at org.optaplanner.core.api.solver.SolverFactory.create(SolverFactory.java:122)
2022-10-24T20:49:11.164110+00:00 app[web.1]: at org.optaplanner.spring.boot.autoconfigure.OptaPlannerAutoConfiguration.solverFactory(OptaPlannerAutoConfiguration.java:115)
2022-10-24T20:49:11.164111+00:00 app[web.1]: at org.optaplanner.spring.boot.autoconfigure.OptaPlannerAutoConfiguration$$EnhancerBySpringCGLIB$$43d387fa.CGLIB$solverFactory$1(<generated>)
2022-10-24T20:49:11.164111+00:00 app[web.1]: at org.optaplanner.spring.boot.autoconfigure.OptaPlannerAutoConfiguration$$EnhancerBySpringCGLIB$$43d387fa$$FastClassBySpringCGLIB$$f1672db8.invoke(<generated>)
2022-10-24T20:49:11.164111+00:00 app[web.1]: at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
2022-10-24T20:49:11.164112+00:00 app[web.1]: at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
2022-10-24T20:49:11.164112+00:00 app[web.1]: at org.optaplanner.spring.boot.autoconfigure.OptaPlannerAutoConfiguration$$EnhancerBySpringCGLIB$$43d387fa.solverFactory(<generated>)
2022-10-24T20:49:11.164113+00:00 app[web.1]: at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2022-10-24T20:49:11.164113+00:00 app[web.1]: at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2022-10-24T20:49:11.164113+00:00 app[web.1]: at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2022-10-24T20:49:11.164113+00:00 app[web.1]: at java.base/java.lang.reflect.Method.invoke(Method.java:566)
2022-10-24T20:49:11.164114+00:00 app[web.1]: at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
2022-10-24T20:49:11.164114+00:00 app[web.1]: ... 53 common frames omitted
2022-10-24T20:49:11.164116+00:00 app[web.1]: Caused by: java.lang.RuntimeException: [Message [id=1, kieBase=defaultKieBase, level=ERROR, path=constraints.drl, line=-1, column=0
2022-10-24T20:49:11.164117+00:00 app[web.1]: text=You're trying to use the Truth Maintenance System without having imported it. Please add the module org.drools:drools-tms to your classpath.], Message [id=2, kieBase=defaultKieBase, level=ERROR, path=constraints.drl, line=-1, column=0
2022-10-24T20:49:11.164117+00:00 app[web.1]: text=You're trying to use the Truth Maintenance System without having imported it. Please add the module org.drools:drools-tms to your classpath.]]
2022-10-24T20:49:11.164118+00:00 app[web.1]: at org.kie.internal.utils.KieHelper.getKieContainer(KieHelper.java:106)

解决方案

添加drools-tms依赖

直接在项目的依赖配置中引入org.drools:drools-tms,版本与OptaPlanner版本保持一致(8.19.0.Final):

Maven配置

<dependency>
    <groupId>org.drools</groupId>
    <artifactId>drools-tms</artifactId>
    <version>8.19.0.Final</version>
</dependency>

Gradle配置

implementation 'org.drools:drools-tms:8.19.0.Final'

问题原因分析

报错通常由以下两种情况导致:

  • 近期修改DRL约束文件,使用了需要TMS支持的特性(比如insertLogical逻辑断言);
  • 依赖更新过程中,间接移除了drools-tms依赖(之前可能由其他依赖自动引入)。

内容的提问来源于stack exchange,提问作者elk-tamer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:15:41