繁体   English   中英

无法在Eclipse中运行“Hello World”Drools示例:运行时异常org.drools.RuntimeDroolsException:无法加载方言

[英]Unable to run “Hello World” Drools example in Eclipse: runtime exception org.drools.RuntimeDroolsException: Unable to load dialect

我刚刚在Eclipse(版本3.5.2)中安装了Drools plug-in ,我正在尝试运行插件附带的“Hello World”示例。

当我运行代码时,我遇到以下堆栈跟踪的runtime error

org.drools.RuntimeDroolsException: Unable to load dialect 'org.drools.rule.builder.dialect.java.JavaDialectConfiguration:java:org.drools.rule.builder.dialect.java.JavaDialectConfiguration'
 at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:274)
 at org.drools.compiler.PackageBuilderConfiguration.buildDialectConfigurationMap(PackageBuilderConfiguration.java:259)
 at org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:176)
 at org.drools.compiler.PackageBuilderConfiguration.<init>(PackageBuilderConfiguration.java:153)
 at org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:242)
 at org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:142)
 at org.drools.builder.impl.KnowledgeBuilderProviderImpl.newKnowledgeBuilder(KnowledgeBuilderProviderImpl.java:29)
 at org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuilder(KnowledgeBuilderFactory.java:29)
 at com.sample.DroolsTest.readKnowledgeBase(DroolsTest.java:39)
 at com.sample.DroolsTest.main(DroolsTest.java:23)
Caused by: java.lang.RuntimeException: **The Eclipse JDT Core jar is not in the classpath**
 at org.drools.rule.builder.dialect.java.JavaDialectConfiguration.setCompiler(JavaDialectConfiguration.java:94)
 at org.drools.rule.builder.dialect.java.JavaDialectConfiguration.init(JavaDialectConfiguration.java:55)
 at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:270)
 ... 9 more

以下是一些相关的Java代码:

public static final void main(String[] args) {
    try {
        // load up the knowledge base
        KnowledgeBase kbase = readKnowledgeBase();
    }
}

private static KnowledgeBase readKnowledgeBase() throws Exception {
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL);
    KnowledgeBuilderErrors errors = kbuilder.getErrors();
    if (errors.size() > 0) {
        for (KnowledgeBuilderError error : errors) {
            System.err.println(error);
        }
        throw new IllegalArgumentException("Could not parse knowledge.");
    }
    KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
    kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
    return kbase;
}

您在类路径中缺少eclipse JDT核心jar。 如果您没有使用Drools类路径容器,或者您手动创建了自己的运行时,请确保jar是类路径或运行时目录的一部分。 如果您正在使用Drools类路径容器并生成默认运行时,并且JDT核心jar不存在,请确保使用支持Eclipse 3.5.2的最新版本的插件。 您当然也可以手动添加JDT核心jar并重新创建运行时。

有关运行时的更多信息,请访问http://download.jboss.org/drools/release/5.1.1.34858.FINAL/drools-5.1.1-docs.zip并打开drools-5.1.1-docs.zip\\drools-flow\\html\\ch.Drools_Eclipse_IDE_Features.html

这是一个常见问题,只需在你的类路径中包含eclipse Jdt核心jar,它就会解决这个问题。 你可以从这里添加jar: http//www.java2s.com/Code/Jar/o/Downloadorgeclipsejdtcore371jar.htm

如果您使用的是JDK 1.7或更高版本,则必须在创建JVM之前设置一个参数,因为在JNI4NET Sample上使用的Drools是版本5.1,它在JDK 1.7或更高版本上不起作用。

在创建JVM之前尝试使用此行:

var bridgeSetup = new BridgeSetup();
// ... 
bridgeSetup.AddJVMOption("-Ddrools.dialect.java.compiler.lnglevel", "1.6");
// ...
Bridge.CreateJVM(bridgeSetup);

所以我终于重新开始了。

我做了以下(2014年4月)

  1. 从清洁安装Eclipse Kepler开始
  2. 转到Eclipse Marketplace并搜索“JBoss Developer Studio(Kepler)”,然后安装:“Red Hat JBoss Developer Studio(Kepler)7.1.1.GA”(您的版本可能会有所不同)
  3. 重启Eclipse
  4. 转到Eclipse Marketplace并搜索“JBoss Developer Studio(Kepler)”,然后安装:“JBoss Tools(Kepler)4.1.2.Final”(您的版本可能会有所不同)
  5. 重启Eclipse。
  6. 安装“drools”。 转到Eclipse Menu,然后单击“Help”/“Install New Software”并添加以下URL。 Drools_UpdateSite - http://download.jboss.org/drools/release/6.0.0.Final/org.drools.updatesite/我安装了每个选项。
  7. 重启Eclipse。
  8. 转到New-Project并添加一个新的“Drools项目”。

然后我能够运行流氓“你好世界”。

我还补充说:

转到Eclipse Menu,然后单击“Help”/“Install New Software”并添加以下URL。

http://download.eclipse.org/technology/m2e/releases 

并安装

"m2e - Maven Integration for Eclipse"
and "m2e - slf4j over logback logging (Optional)"

我遇到了同样的问题。 如其他答案所述,如果手动创建运行时(如我的情况),那么您需要在类路径中添加eclipse JDT核心jar。 这是jar的下载链接 - > http://www.java2s.com/Code/Jar/o/Downloadorgeclipsejdtcore371jar.htm将此添加到类路径解决了我的问题。

http://www.java2s.com/Code/Jar/o/Downloadorgeclipsejdtcore371jar.htm在你的类路径中浏览JDT核心jar。

在此输入图像描述

请确保它应该是一个jar而不是zip文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM