0

droolsplannerの試験例を使って自分の例を作りました。クラスの名前を変更し、1つを除くすべてのルールを消去しました。アプリケーションが起動し、XMLファイルをロードできました。「解決」ボタンをクリックすると、エラーが発生しました。

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

誰かが私に問題を解決するためのヒントを教えてもらえますか?エラーメッセージの意味がわかりません。

ありがとうございました。

4

2 に答える 2

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からコピーされた可能性があります)。

于 2012-08-06T06:59:02.410 に答える
0

それはエラーメッセージ全体でした!

問題は cloneSolution メソッドでした。メソッドの実装を忘れています。オブジェクトのクローンを作成する必要があるため、ソルバーは解決策を見つけることができませんでした。

誰にとっても: このメソッドを実装し、スコア属性をコピーすることを忘れないでください。スコアがなければ、本当の解決策にはなりません。

于 2012-08-04T19:28:28.827 に答える