简体   繁体   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

I just installed the Drools plug-in in Eclipse (version 3.5.2), and I am trying to run the "Hello World" example that comes with the plug-in. 我刚刚在Eclipse(版本3.5.2)中安装了Drools plug-in ,我正在尝试运行插件附带的“Hello World”示例。

When I run the code, I am getting runtime error with the following stack trace: 当我运行代码时,我遇到以下堆栈跟踪的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

Here is some of the relevant Java code: 以下是一些相关的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;
}

You're missing the eclipse JDT core jar in your classpath. 您在类路径中缺少eclipse JDT核心jar。 If you are not using the Drools classpath container or if you manually created your own runtime, make sure that jar is part of your classpath or runtime directory. 如果您没有使用Drools类路径容器,或者您手动创建了自己的运行时,请确保jar是类路径或运行时目录的一部分。 If you are using the Drools classpath container and generated a default runtime, and the JDT core jar is not there, make sure to use a recent version of the plugin that supports Eclipse 3.5.2. 如果您正在使用Drools类路径容器并生成默认运行时,并且JDT核心jar不存在,请确保使用支持Eclipse 3.5.2的最新版本的插件。 You can of course also just add the JDT core jar manually and recreate your runtime. 您当然也可以手动添加JDT核心jar并重新创建运行时。

More info on runtimes can be found at http://download.jboss.org/drools/release/5.1.1.34858.FINAL/drools-5.1.1-docs.zip and open up drools-5.1.1-docs.zip\\drools-flow\\html\\ch.Drools_Eclipse_IDE_Features.html 有关运行时的更多信息,请访问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

This is a common problem,just include eclipse Jdt core jar in your class path ,it will solve this problem. 这是一个常见问题,只需在你的类路径中包含eclipse Jdt核心jar,它就会解决这个问题。 You can add jar from here: http://www.java2s.com/Code/Jar/o/Downloadorgeclipsejdtcore371jar.htm 你可以从这里添加jar: http//www.java2s.com/Code/Jar/o/Downloadorgeclipsejdtcore371jar.htm

If you are using a JDK 1.7 or over, you will have set a parameter before create JVM because Drools used on JNI4NET Sample is version 5.1 and it doesn't work on JDK 1.7 or over. 如果您使用的是JDK 1.7或更高版本,则必须在创建JVM之前设置一个参数,因为在JNI4NET Sample上使用的Drools是版本5.1,它在JDK 1.7或更高版本上不起作用。

Try use this line before create JVM: 在创建JVM之前尝试使用此行:

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

So I finally started over. 所以我终于重新开始了。

I did the following (April, 2014) 我做了以下(2014年4月)

  1. Starting with clean install of Eclipse Kepler 从清洁安装Eclipse Kepler开始
  2. Go to Eclipse Marketplace and search for "JBoss Developer Studio (Kepler)" and then install: "Red Hat JBoss Developer Studio (Kepler) 7.1.1.GA" (Your version may vary) 转到Eclipse Marketplace并搜索“JBoss Developer Studio(Kepler)”,然后安装:“Red Hat JBoss Developer Studio(Kepler)7.1.1.GA”(您的版本可能会有所不同)
  3. Restart Eclipse 重启Eclipse
  4. Go to Eclipse Marketplace and search for "JBoss Developer Studio (Kepler)" and then install: "JBoss Tools (Kepler) 4.1.2.Final" (Your version may vary) 转到Eclipse Marketplace并搜索“JBoss Developer Studio(Kepler)”,然后安装:“JBoss Tools(Kepler)4.1.2.Final”(您的版本可能会有所不同)
  5. Restart Eclipse. 重启Eclipse。
  6. Install "drools". 安装“drools”。 Go to Eclipse Menu and then "Help" / "Install New Software" and add the below URL. 转到Eclipse Menu,然后单击“Help”/“Install New Software”并添加以下URL。 Drools_UpdateSite - http://download.jboss.org/drools/release/6.0.0.Final/org.drools.updatesite/ I installed every option. Drools_UpdateSite - http://download.jboss.org/drools/release/6.0.0.Final/org.drools.updatesite/我安装了每个选项。
  7. Restart Eclipse. 重启Eclipse。
  8. Go to New-Project and add a new "Drools Project". 转到New-Project并添加一个新的“Drools项目”。

Then I was able to run the drools "hello world". 然后我能够运行流氓“你好世界”。

I also added: 我还补充说:

Go to Eclipse Menu and then "Help" / "Install New Software" and add the below URL. 转到Eclipse Menu,然后单击“Help”/“Install New Software”并添加以下URL。

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

and installed 并安装

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

I faced the same problem. 我遇到了同样的问题。 As stated in other answers that if runtime is created manually(as in my case) then you need to add the eclipse JDT core jar in your classpath. 如其他答案所述,如果手动创建运行时(如我的情况),那么您需要在类路径中添加eclipse JDT核心jar。 here is the download link for the jar-> http://www.java2s.com/Code/Jar/o/Downloadorgeclipsejdtcore371jar.htm Adding this to the classpath solved my problem. 这是jar的下载链接 - > http://www.java2s.com/Code/Jar/o/Downloadorgeclipsejdtcore371jar.htm将此添加到类路径解决了我的问题。

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

在此输入图像描述

Please ensure it should be a jar not zip file. 请确保它应该是一个jar而不是zip文件。

暂无
暂无

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

相关问题 无法加载方言org.drools.compiler.rule.builder.dialect.mvel.MVELDialectConfiguration - Unable to load dialect org.drools.compiler.rule.builder.dialect.mvel.MVELDialectConfiguration 无法加载方言&#39;org.drools.compiler.rule.builder.dialect.java.JavaDialectConfiguration:java:null&#39; - Unable to load dialect 'org.drools.compiler.rule.builder.dialect.java.JavaDialectConfiguration:java:null' 无法在Eclipse中运行Hello World程序 - unable to run a hello world program in eclipse Drools Hello World Maven依赖项 - Drools hello world maven dependencies Drools的运行时异常(org.drools.util.CompositeClassLoader.clone()Lorg / drools / util / CompositeClassLoader) - Runtime exception with Drools(org.drools.util.CompositeClassLoader.clone()Lorg/drools/util/CompositeClassLoader) 无法运行简单的世界 - Unable to run a simple hello world 无法加载流口水kie:ksession bean - unable to load drools kie:ksession bean Drools的运行时异常(java.lang.ClassCastException:org.drools.io.impl.ClassPathResource无法强制转换为org.drools.io.InternalResource) - Runtime Exception with Drools(java.lang.ClassCastException: org.drools.io.impl.ClassPathResource cannot be cast to org.drools.io.InternalResource) 无法编组流口水知识会议 - Unable to Marshall a Drools KnowledgeSession 无法在drools上运行hello world - KieContainer不会从类路径中选择dlr文件 - Can't run hello world on drools - dlr files are not picked from classpath by KieContainer
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM