Drools5でコンパイラをJANINOにする方法
Droolsのルールをコンパイルするのにコンパイラを指定する必要があります。デフォルトはEclipseJDTになっています。で、プログラム実行時に以下のようなExceptionが出ることがあります。
回避策は2つ
1.JANINOに変更する
2.classpathを外部jarで通す。
2.の方はeclipseのpluginフォルダにorg.eclipse.jdt.core_3.4.X.jarではじまるのがあるのでそこに通せばOK.もしくはDroolsをインストールしたbin/libの中に関係する依存jarが入っており,その中でcore-3.4.2.v_883_R34x.jarがあるのでそれを利用する。
今回は1.の方についてちょっと触れる
KnowledgeBuilderConfiguration config = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); config.setProperty("drools.dialect.java.compiler", "JANINO"); KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder( config );
というのが新APIでの設定方法らしい。undocumentedだったので確認したらjavadocに追加してくれました。でもこれだけでも動かずで結局はclasspathの通っている場所でMETA-INFをおいてdrools.packagebuilder.confを作成してdrools.dialect.java.compiler = JANINOを記述。それで実行するとOK!
でもソースをみるとどうもあやしいのでMETA-INFのところはそのままにして上記APIの記述をコメントにしてみました(configのところを特に何もしない記述)。それで実行してみたらやっぱり動いてしまいました。。。Sources tell everything、ということにしておきますw