java - 非常基本的 drools 5 运行,基本设置和快速入门

标签 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:
     [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

...
...

我确实在我的 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 代码,那也不起作用。

公共(public)无效规则(){

/*
final Properties properties = new Properties(); 
properties.setProperty( "drools.dialect.java.compiler", "JANINO" ); 
PackageBuilderConfiguration cfg = new PackageBuilderConfiguration( properties ); 
JavaDialectConfiguration javaConf = (JavaDialectConfiguration) 
cfg.getDialectConfiguration( "java" ); 
*/
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// this will parse and compile in one step
kbuilder.add(ResourceFactory.newClassPathResource("HelloWorld.drl", Rules.class), ResourceType.DRL);

// Check the builder for errors
if (kbuilder.hasErrors()) {
    System.out.println(kbuilder.getErrors().toString());
    throw new RuntimeException("Unable to compile \"HelloWorld.drl\".");
}

// Get the compiled packages (which are serializable)
final Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();

// Add the packages to a knowledgebase (deploy the knowledge packages).
final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);

final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
ksession.setGlobal("list", new ArrayList<Object>());

ksession.addEventListener(new DebugAgendaEventListener());
ksession.addEventListener(new DebugWorkingMemoryEventListener());

// Setup the audit logging
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "log/helloworld");

final Message message = new Message();
message.setMessage("Hello World");
message.setStatus(Message.HELLO);
ksession.insert(message);

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();

我在 Windows XP、Java6 和 Ant.1.7 中运行。 Drools-Rules 的最新(截至昨天)第 5 版。

最佳答案

问题的关键是错误列表中的这一行: “引起:java.lang.RuntimeException:Eclipse JDT Core jar 不在类路径中”

此引用是对由 Eclipse Drools 插件安装的库“core-3.4.2.v_883_R34x.jar”

如果您将 core-3.4.2.v_883_R34x.jar 添加到您的库中,那么您将不会获得运行时异常。

关于java - 非常基本的 drools 5 运行,基本设置和快速入门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2687279/

相关文章:

jboss - org.jboss.remoting3.ProtocolException : Too many channels open. 如何增加 channel

css - :visited links not following CSS rules

sonarqube - Sonar - 规则定制 - Markdown 语法问题

java - 验证类层次结构覆盖

java - 多线程应用程序中的静态方法和数据成员降低内存使用率?

java - JBoss类路径问题

login - JBoss Wildfly - 数据库登录模块

odoo 覆盖对象的组权限

java - 如何比较两个Map列表以识别Java8 Streams中具有多个过滤谓词的匹配和不匹配记录

java - 在 TomEE 上部署 Web 应用程序 - Tomcat 7、JPA1