Sehr einfache Ausführung von drools 5, basic-setup-und Schnellstart
Gibt es eine umfassende Kurzanleitung für drools 5. Ich war versucht, das einfache "Hello World".drl Regel, aber ich wollte es tun durch ein ant-Skript, evtl. nur mit javac/java:
Bekomme ich die folgende Fehlermeldung: Hinweis: ich nicht bin, läuft komplett ohne Eclipse oder andere IDE:
Gibt es eine umfassende Kurzanleitung für drools 5. Ich war versucht, das einfache "Hello World".drl Regel, aber ich wollte es tun durch ein ant-Skript, evtl. nur mit javac/java:
Bekomme ich die folgende Fehlermeldung: Hinweis: ich nicht bin, läuft komplett ohne Eclipse oder andere 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
...
...
Ich weiß sind die folgenden Bibliotheken mit meiner javac und java Ziel:
<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>
Hier ist der Java code, der wirft den Fehler. Ich auskommentiert java.compiler code, das hat nicht funktioniert entweder.
public void Regeln() {
/*
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();
}
...
Hier ich glaube nicht, dass Ant relevant ist, weil ich habe die Gabel auf true gesetzt:
<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>
Den Fehler in Zeile 1.
Grundsätzlich, ich habe nichts getan, außer Anruf
letzten KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Ich bin mit Windows XP, Java6, und Ant.1.7.
Die jüngsten (seit gestern), version 5, von Drools-Regeln.
InformationsquelleAutor Berlin Brown | 2010-04-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
den Schlüssel zu dem problem ist diese Zeile in der Auflistung der Fehler:
"Caused by: java.lang.RuntimeException: Der Eclipse JDT-Core-jar nicht im classpath"
Dieser Verweis auf die Bibliothek "core-3.4.2.v_883_R34x.jar" das ist installiert von der Drools Eclipse plugins
Wenn Sie hinzufügen core-3.4.2.v_883_R34x.jar zu den Bibliotheken, dann werden Sie nicht bekommen, die Laufzeit-exception.
InformationsquelleAutor dshields
Ich habe versucht, die drools-5.0-Beispiele "HelloWorld" und dann dein Beispiel-code mit Maven und verwaltet, um es arbeiten. Ich habe dann konstruierte ein Ant-build-Datei mit den Eigenschaften, die Sie beschreiben, und bekam genau das gleiche Ergebnis, dass du getan hast.
Bemerkte ich, dass die Maven version enthält viele weitere abhängigen Bibliotheken. Wenn ich kopieren Sie diese Abhängigkeiten von Maven in Ant-version "lib" - Verzeichnis und aktualisieren Sie die build.xml um diese dann dein code funktioniert einwandfrei.
InformationsquelleAutor Mark McLaren