Java 非常基本的drools 5运行、基本设置和快速启动

Java 非常基本的drools 5运行、基本设置和快速启动,java,jboss,rules,drools,Java,Jboss,Rules,Drools,对于drools 5是否有更全面的快速入门。我试图运行简单的Hello World.drl规则,但我想通过一个ant脚本来实现,可能只需要javac/java: 我得到以下错误:注意:我没有完全在没有Eclipse或任何其他IDE的情况下运行: 对于drools 5是否有更全面的快速入门。我试图运行简单的Hello World.drl规则,但我想通过一个ant脚本来实现,可能只需要javac/java: 我得到以下错误:注意:我没有完全在没有Eclipse或任何其他IDE的情况下运行: test

对于drools 5是否有更全面的快速入门。我试图运行简单的Hello World.drl规则,但我想通过一个ant脚本来实现,可能只需要javac/java:

我得到以下错误:注意:我没有完全在没有Eclipse或任何其他IDE的情况下运行:

对于drools 5是否有更全面的快速入门。我试图运行简单的Hello World.drl规则,但我想通过一个ant脚本来实现,可能只需要javac/java:

我得到以下错误:注意:我没有完全在没有Eclipse或任何其他IDE的情况下运行:

test:
     [java] Exception in thread "main" org.drools.RuntimeDroolsException: Unable to load d
ialect 'org.drools.rule.builder.dialect.java.JavaDialectConfiguration:java:org.drools.rule
.builder.dialect.java.JavaDialectConfiguration'
     [java]     at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuild
erConfiguration.java:274)
     [java]     at org.drools.compiler.PackageBuilderConfiguration.buildDialectConfigurati
onMap(PackageBuilderConfiguration.java:259)
     [java]     at org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConf
iguration.java:176)
     [java]     at org.drools.compiler.PackageBuilderConfiguration.<init>(PackageBuilderCo
nfiguration.java:153)
     [java]     at org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:242)
     [java]     at org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:142)
     [java]     at org.drools.builder.impl.KnowledgeBuilderProviderImpl.newKnowledgeBuilde
r(KnowledgeBuilderProviderImpl.java:29)
     [java]     at org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuilder(Knowledg
eBuilderFactory.java:29)
     [java]     at org.berlin.rpg.rules.Rules.rules(Rules.java:33)
     [java]     at org.berlin.rpg.rules.Rules.main(Rules.java:73)
     [java] Caused by: java.lang.RuntimeException: The Eclipse JDT Core jar is not in the
classpath
     [java]     at org.drools.rule.builder.dialect.java.JavaDialectConfiguration.setCompil
er(JavaDialectConfiguration.java:94)
     [java]     at org.drools.rule.builder.dialect.java.JavaDialectConfiguration.init(Java
DialectConfiguration.java:55)
     [java]     at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuild
erConfiguration.java:270)
     [java]     ... 9 more
     [java] Java Result: 1

...
...
测试:
线程“main”org.drools.RuntimeDroolsException中的[java]异常:无法加载d
ialect'org.drools.rule.builder.dialent.java.javadialent配置:java:org.drools.rule
.builder.dialogue.java.javadialogonConfiguration'
[java]位于org.drools.compiler.PackageBuilderConfiguration.add方言(PackageBuild
eConfiguration.java:274)
[java]位于org.drools.compiler.PackageBuilderConfiguration.build方言配置
onMap(PackageBuilderConfiguration.java:259)
[java]位于org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConf
iguration.java:176)
[java]位于org.drools.compiler.PackageBuilderConfiguration
java:153)
[java]位于org.drools.compiler.PackageBuilder.(PackageBuilder.java:242)
[java]位于org.drools.compiler.PackageBuilder.(PackageBuilder.java:142)
[java]位于org.drools.builder.impl.KnowledgeBuilderProviderImpl.newKnowledgeBuilde
r(KnowledgeBuilderProviderImpl.java:29)
[java]位于org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuilder(Knowledg
eBuilderFactory.java:29)
[java]位于org.berlin.rpg.rules.rules.rules(rules.java:33)
[java]位于org.berlin.rpg.rules.rules.main(rules.java:73)
[java]原因:java.lang.RuntimeException:Eclipse JDT核心jar不在
类路径
[java]位于org.drools.rule.builder.dialen.java.javadialenconfiguration.setCompil
er(javadialtonconfiguration.java:94)
[java]位于org.drools.rule.builder.dialen.java.javadialenconfiguration.init(java
方言配置(java:55)
[java]位于org.drools.compiler.PackageBuilderConfiguration.add方言(PackageBuild
eConfiguration.java:270)
[java]。。。9更多
[java]java结果:1
...
...
我的javac和java目标包括以下库:

 <path id="classpath">
     <pathelement location="${lib.dir}" />
     <pathelement location="${lib.dir}/drools-api-5.0.1.jar" />
     <pathelement location="${lib.dir}/drools-compiler-5.0.1.jar" />
     <pathelement location="${lib.dir}/drools-core-5.0.1.jar" />
     <pathelement location="${lib.dir}/janino-2.5.15.jar" />
 </path>

下面是抛出错误的Java代码。我注释掉了java.compiler代码,这也不起作用

公共无效规则(){

/*
最终属性=新属性();
setProperty(“drools.dial.java.compiler”、“JANINO”);
PackageBuilderConfiguration cfg=新PackageBuilderConfiguration(属性);
JavaDianalConfiguration javaConf=(JavaDianalConfiguration)
getDiagnolConfiguration(“java”);
*/
final KnowledgeBuilder kbuilder=KnowledgeBuilderFactory.newKnowledgeBuilder();
//这将在一个步骤中解析和编译
添加(ResourceFactory.newClassPathResource(“HelloWorld.drl”,Rules.class),ResourceType.drl);
//检查生成器是否存在错误
if(kbuilder.hasErrors()){
System.out.println(kbuilder.getErrors().toString());
抛出新的RuntimeException(“无法编译\“HelloWorld.drl\”);
}
//获取已编译的包(可序列化)
最终集合pkgs=kbuilder.getKnowledgePackages();
//将包添加到知识库(部署知识包)。
final KnowledgeBase kbase=KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(PKG);
final StatefulKnowledgeSession ksession=kbase.newStatefulKnowledgeSession();
setGlobal(“list”,newarraylist());
ksession.addEventListener(新的DebugAgendaEventListener());
ksession.addEventListener(新的DebugWorkingMemoryEventListener());
//设置审核日志
KnowledgeRuntimeLogger logger=KnowledgeRuntimeLoggerFactory.newFileLogger(ksession,“log/helloworld”);
最终消息消息=新消息();
message.setMessage(“你好世界”);
message.setStatus(message.HELLO);
k会话。插入(消息);
ksession.fireAllRules();
logger.close();
ksession.dispose();
}

在这里,我认为Ant与此无关,因为我将fork设置为true:

 <target name="test" depends="compile">
     <java classname="org.berlin.rpg.rules.Rules" fork="true">
         <classpath refid="classpath.rt" />
         <classpath>
             <pathelement location="${basedir}" />
             <pathelement location="${build.classes.dir}" />
         </classpath>
     </java>
 </target>

错误在第1行抛出

基本上,除了打电话,我什么都没做

final KnowledgeBuilder kbuilder=KnowledgeBuilderFactory.newKnowledgeBuilder()

我使用的是WindowsXP、Java6和Ant.1.7。
Drools规则的最新(截至昨天)版本5。

我尝试了Drools-5.0-examples HelloWorld,然后使用Maven尝试了您的示例代码,并设法使其正常工作。然后,我构建了一个具有您描述的特征的Ant构建文件,得到了与您完全相同的结果

我注意到Maven版本包含更多的依赖库。如果我将这些依赖项从Maven复制到Ant版本的“lib”目录中,并更新build.xml以包含这些依赖项,那么您的代码工作正常

<path id="classpath.rt">
  <pathelement location="${lib.dir}/antlr-runtime-3.1.1.jar" />
  <pathelement location="${lib.dir}/core-3.4.2.v_883_R34x.jar" />
  <pathelement location="${lib.dir}/drools-api-5.0.1.jar" />
  <pathelement location="${lib.dir}/drools-compiler-5.0.1.jar" />
  <pathelement location="${lib.dir}/drools-core-5.0.1.jar" />
  <pathelement location="${lib.dir}/drools-transformer-xstream-5.0.1.jar" />
  <pathelement location="${lib.dir}/janino-2.5.15.jar" />
  <pathelement location="${lib.dir}/joda-time-1.6.jar" />
  <pathelement location="${lib.dir}/mvel2-2.0.10.jar" />
  <pathelement location="${lib.dir}/xpp3_min-1.1.4c.jar" />
  <pathelement location="${lib.dir}/xstream-1.3.1.jar" />      
</path>

我尝试了drools-5.0-examples HelloWorld,然后使用Maven尝试了您的示例代码,并设法使其正常工作。然后,我构建了一个具有您描述的特征的Ant构建文件,得到了与您完全相同的结果

我注意到Maven版本包含更多的依赖库。如果我将这些依赖项从Maven复制到Ant版本的“lib”目录中,并更新build.xml以包含这些依赖项,那么您的代码工作正常

<path id="classpath.rt">
  <pathelement location="${lib.dir}/antlr-runtime-3.1.1.jar" />
  <pathelement location="${lib.dir}/core-3.4.2.v_883_R34x.jar" />
  <pathelement location="${lib.dir}/drools-api-5.0.1.jar" />
  <pathelement location="${lib.dir}/drools-compiler-5.0.1.jar" />
  <pathelement location="${lib.dir}/drools-core-5.0.1.jar" />
  <pathelement location="${lib.dir}/drools-transformer-xstream-5.0.1.jar" />
  <pathelement location="${lib.dir}/janino-2.5.15.jar" />
  <pathelement location="${lib.dir}/joda-time-1.6.jar" />
  <pathelement location="${lib.dir}/mvel2-2.0.10.jar" />
  <pathelement location="${lib.dir}/xpp3_min-1.1.4c.jar" />
  <pathelement location="${lib.dir}/xstream-1.3.1.jar" />      
</path>

问题的关键在于错误列表中的这一行: “原因:java.lang.RuntimeException:Eclipse JDT核心jar不在