繁体   English   中英

Drools计划人员说NullpointerException“解决失败”

[英]Drools planner says “Solving failed” with NullpointerException

我使用了Drools Planner的考试示例来创建自己的示例。 我重命名了类,并删除了除一条规则以外的所有规则。 应用程序启动,我可以加载我的XML文件。 单击“解决”按钮时,发生错误:

pool-2-thread-1] ERROR swingui.SolverAndPersistenceFrame - Solving failed.
java.lang.NullPointerException: null

有人可以给我提示解决问题吗? 我不知道错误消息的含义。

谢谢。

这是整个错误消息!

问题是cloneSolution方法。 我忘记实现该方法。 因此,求解器无法找到解决方案,因为它必须克隆我的对象。

对于每个人:不要忘记实现此方法并复制score属性。 没有分数将不会是一个真正的解决方案。

在Planner 5.5.0.Beta1的SNAPSHOT上,我在cloneSolution方法中添加了NPE并获得了以下堆栈跟踪:

2012-08-06 08:56:08,157 [AWT-EventQueue-0] INFO  Loaded: data/cloudbalancing/unsolved/cb-0100comp-0300proc.xml
2012-08-06 08:56:09,122 [pool-2-thread-1] ERROR Solving failed.
java.lang.NullPointerException: null
    at org.drools.planner.examples.cloudbalancing.domain.CloudBalance.cloneSolution(CloudBalance.java:92) ~[classes/:na]
    at org.drools.planner.examples.cloudbalancing.domain.CloudBalance.cloneSolution(CloudBalance.java:31) ~[classes/:na]
    at org.drools.planner.core.solver.DefaultSolverScope.setWorkingSolutionFromBestSolution(DefaultSolverScope.java:154) ~[classes/:na]
    at org.drools.planner.core.solver.DefaultSolver.solvingStarted(DefaultSolver.java:176) ~[classes/:na]
    at org.drools.planner.core.solver.DefaultSolver.solve(DefaultSolver.java:154) ~[classes/:na]
    at org.drools.planner.examples.common.business.SolutionBusiness.solve(SolutionBusiness.java:276) ~[classes/:na]
    at org.drools.planner.examples.common.swingui.SolverAndPersistenceFrame$SolveAction$1.run(SolverAndPersistenceFrame.java:252) ~[classes/:na]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) [na:1.6.0_26]
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) [na:1.6.0_26]
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) [na:1.6.0_26]
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [na:1.6.0_26]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [na:1.6.0_26]
    at java.lang.Thread.run(Thread.java:662) [na:1.6.0_26]

因此,stacktrace进餐代码必须位于您的自定义SolverAndPersistenceFrame代码中(该代码可能是从可能有此错误的较旧的Planner版本复制的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM