我刚刚在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;
}
答案 0 :(得分:7)
你在类路径中缺少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
答案 1 :(得分:2)
这是一个常见问题,只需在你的类路径中包含eclipse Jdt核心jar,它就会解决这个问题。 你可以从这里添加jar: http://www.java2s.com/Code/Jar/o/Downloadorgeclipsejdtcore371jar.htm
答案 2 :(得分:1)
如果您使用的是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);
答案 3 :(得分:1)
所以我终于重新开始了。
我做了以下(2014年4月)
然后我能够运行流氓“你好世界”。
我还补充说:
转到Eclipse菜单,然后选择“帮助”/“安装新软件”并添加以下URL。
http://download.eclipse.org/technology/m2e/releases
并安装
"m2e - Maven Integration for Eclipse"
and "m2e - slf4j over logback logging (Optional)"
答案 4 :(得分:1)
我遇到了同样的问题。 如其他答案所述,如果手动创建运行时(如我的情况),那么您需要在类路径中添加eclipse JDT核心jar。 这是jar-&gt;的下载链接http://www.java2s.com/Code/Jar/o/Downloadorgeclipsejdtcore371jar.htm 将其添加到类路径解决了我的问题。
答案 5 :(得分:0)
http://www.java2s.com/Code/Jar/o/Downloadorgeclipsejdtcore371jar.htm使您的类路径中的JDT核心jar失效。
请确保它应该是jar文件而不是zip文件。