0

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

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

任何人都可以给我提示来解决这个问题吗?我不知道错误消息是什么意思。

谢谢你。

4

2 回答 2

0

这是整个错误信息!

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

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

于 2012-08-04T19:28:28.827 回答
0

在 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 复制而来)。

于 2012-08-06T06:59:02.410 回答