我遇到了类似的问题。
我认为问题的一部分是试图生活在两个世界中。JBoss Drools eclipse插件世界和Maven世界。
我安装了各种Jboss / Drools插件的Eclipse 4.3.1(Kepler)。
我以一个日食的例子为例,并确保可以在Maven中运行它。
- 创建了演示drools项目File-> New-> Other ..-> Drools-> Drools Project
- 确保您可以运行测试程序DroolsTest
- 将项目转换为maven项目-配置->转换为Maven项目(这将创建具有许多依赖项的pom.xml文件。这些文件可能是修剪的)
- 从构建路径中删除了Drools库-在项目属性Build Path-> Libraries中-选择Drools Library并单击Remove
- 禁用Drools构建器-在项目属性Builders中->取消选中Drools Builder
- 从pom.xml中注释掉依赖jsr94(不可检索)
- 从命令行“ mvm clean install”运行maven。
这应该给您一个完全由Maven构建和运行的项目。
添加到您的pom.xml
<plugin> <groupId>org.prehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> </plugin>
和
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.2</version> <scope>runtime</scope></dependency>
尝试:
mvn -e exec:java -Dexec.mainClass =“ com.sample.DroolsTest”
它应该产生:
...[com.sample.DroolsTest.main()] INFO org.drools.compiler.kie.builder.impl.ClasspathKieProject - Found kmodule: file:/Users/davidbernard/Projects/action-deducing-diff/xx/target/classes/meta-INF/kmodule.xml[com.sample.DroolsTest.main()] INFO org.drools.compiler.kie.builder.impl.KieRepositoryImpl - KieModule was added:FileKieModule[ ReleaseId=x:x:1.0file=/Users/davidbernard/Projects/action-deducing-diff/xx/target/classes][com.sample.DroolsTest.main()] INFO org.drools.compiler.kie.builder.impl.ClasspathKieProject - Found kmodule: file:/Users/davidbernard/Projects/action-deducing-diff/xx/target/classes/meta-INF/kmodule.xml[com.sample.DroolsTest.main()] INFO org.drools.compiler.kie.builder.impl.KieRepositoryImpl - KieModule was added:FileKieModule[ ReleaseId=x:x:1.0file=/Users/davidbernard/Projects/action-deducing-diff/xx/target/classes]Hello WorldGoodbye cruel world...
现在,您还应该能够从Eclipse运行DroolsTest。
您将有一个rules-> Sample.drl文件和一个kmodule.xml文件。
<?xml version="1.0" encoding="UTF-8"?><kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule"> <kbase name="rules" packages="rules"> <ksession name="ksession-rules"/> </kbase></kmodule>
“ ksession”名称应与创建ksession的代码匹配:
KieSession kSession = kContainer.newKieSession("ksession-rules");“程序包”应与规则文件所在的目录匹配。



