[英]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月)
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.