【发布时间】:2018-07-10 19:58:49
【问题描述】:
我正在使用 optaplanner 解决调度问题。我想从 AWS Lambda 调用调度代码(我知道 Lambda 的最大执行时间是 5 分钟,这对这个应用程序来说没问题)
为了实现这一点,我构建了一个包含两个模块的 maven 项目: module-1:调度优化代码 模块 2:aws lambda 处理程序(从模块 1 调用调度代码)
当我在 IntelliJ Idea 中为 module-1(具有 optaplanner 代码)运行测试时,它运行良好。
当我调用 lambda 函数时,我得到以下异常:
java.lang.ExceptionInInitializerError:
java.lang.ExceptionInInitializerError
java.lang.ExceptionInInitializerError
at org.kie.api.internal.utils.ServiceRegistry.getInstance(ServiceRegistry.java:27)
...
Caused by: java.lang.RuntimeException: Child services [org.kie.api.internal.assembler.KieAssemblers] have no parent
at org.kie.api.internal.utils.ServiceDiscoveryImpl.buildMap(ServiceDiscoveryImpl.java:191)
at org.kie.api.internal.utils.ServiceDiscoveryImpl.getServices(ServiceDiscoveryImpl.java:97)
...
我在 maven 文件中包含以下依赖项:org.optaplanner optaplanner-core 7.7.0.Final
还检查了 jar 文件是否有 drools-core、kie-api、kei-internal、drools-compiler。有谁知道可能是什么问题?
【问题讨论】:
-
对于它的价值(不多),EasyScoreCalculator 和 IncrementalScoreCalculator 不会有这个问题。
-
@GeoffreyDeSmet 当我从 XMLResource 初始化 SolverFactory 时发生此错误,远远早于分数计算阶段。
-
你 100% 确定吗?我希望它发生在
solverFactory.buildSolver(),而不是SolverFactory.createFromXmlResource()。在前一种情况下,其他计算器不受影响。 -
@GeoffreyDeSmet 是的,你是对的,它发生在
solverFactory.buildSolver()
标签: aws-lambda drools optaplanner drools-planner