我使用了drools planner的检查示例来创建我自己的示例。除了一个规则之外,我重命名了这些类并删除了每个规则。应用程序启动,我可以加载我的XML文件。单击“解决”-Button时发生错误:
pool-2-thread-1] ERROR swingui.SolverAndPersistenceFrame - Solving failed.
java.lang.NullPointerException: null
有人能给我提示解决这个问题吗?我不知道错误信息的含义。
谢谢。
答案 0 :(得分:0)
这是整个错误消息!
问题是cloneSolution方法。我忘了实施这个方法。因此解算器无法找到解决方案,因为它必须克隆我的对象。
对于每个人:不要忘记实现此方法并复制得分属性。没有分数,这将不是一个真正的解决方案。
答案 1 :(得分: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]
因此,堆栈跟踪吃代码必须在您的自定义SolverAndPersistenceFrame代码中(可能会从可能存在此类错误的旧版Planner版本中复制)。