0

XML構成からソルバーを作成しようとしました。しかし、プロセス全体が意味のない不可解なエラーメッセージを返します。

これを修正するにはどうすればよいですか?そして、このような同様の問題を実際に解決するために、これをどのように理解できますか?

jesvin@Jesvin-Technovia:~/dev/drools/sudoku$ java App 
Exception in thread "main" java.lang.NullPointerException
    at org.drools.planner.core.domain.solution.SolutionDescriptor.processPropertyAnnotations(SolutionDescriptor.java:69)
    at org.drools.planner.core.domain.solution.SolutionDescriptor.<init>(SolutionDescriptor.java:61)
    at org.drools.planner.config.solver.SolverConfig.buildSolutionDescriptor(SolverConfig.java:197)
    at org.drools.planner.config.solver.SolverConfig.buildSolver(SolverConfig.java:167)
    at org.drools.planner.config.XmlSolverConfigurer.buildSolver(XmlSolverConfigurer.java:103)
    at App.createSolver(App.java:62)
    at App.main(App.java:40)

それをスローする関数はここにリストされています。線はもちろんreturn configurer.buildSolver();です。

private static Solver createSolver(){
XmlSolverConfigurer configurer = new XmlSolverConfigurer();
File file = new File("solver.xml");
FileInputStream fin = null;
try{
    fin = new FileInputStream(file);    
}
catch(IOException e){
     System.out.println("Unable to read drl");
}
configurer.configure(fin);
    //configurer.configure("/home/jesvin/dev/drools/sudoku/solver.xml");
    return configurer.buildSolver();
}

XMLの内容:

<?xml version="1.0" encoding="UTF-8"?>
<solver>
  <environmentMode>DEBUG</environmentMode>

  <solutionClass>domain.Sudoku</solutionClass>
  <planningEntityClass>domain.Digit</planningEntityClass>
  <scoreDrl>score.drl</scoreDrl>
  <scoreDefinition>
    <scoreDefinitionType>SIMPLE</scoreDefinitionType>
  </scoreDefinition>

  <termination>
    <scoreAttained>0</scoreAttained>
  </termination>
  <!--
  <constructionHeuristic>
    <constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType>
    <constructionHeuristicPickEarlyType>FIRST_LAST_STEP_SCORE_EQUAL_OR_IMPROVING</constructionHeuristicPickEarlyType>
</constructionHeuristic> -->
  <constructionHeuristic>
    <constructionHeuristicType>FIRST_FIT</constructionHeuristicType>

      <moveFactoryClass>solution.RowChangeMoveFactory</moveFactoryClass>
    </selector>
    <acceptor>
      <completeSolutionTabuSize>1000</completeSolutionTabuSize>
    </acceptor>
    <forager>
      <!-- Real world problems require to use of <minimalAcceptedSelection> -->
    </forager>
  </localSearch>
</solver>
4

2 に答える 2

1

OPの追加:

この問題は、不注意による書き込み専用プロパティに関連していました。setBlockListgetBlocklist(ゲッターに小さな「l」)がありましたが、これはタイプミスでした。Droolsは、2つのプロパティを検出したため、不満を漏らしました。そのうちの1つは書き込み専用でした。

他の不一致はとでしisFixedsetFixedbooleanビルトインでは機能しますが、Booleanオブジェクトでは機能しません。

メーリングリストの投稿で問題を解決しました。

于 2012-01-30T10:23:32.503 に答える
0

不可解なエラーメッセージは5.4.0.Beta1(すでにリリースされています)で修正されています:https ://issues.jboss.org/browse/JBRULES-3247

于 2012-01-30T10:14:02.840 に答える