![](/img/trans.png)
[英]Unable to load dialect org.drools.compiler.rule.builder.dialect.mvel.MVELDialectConfiguration
[英]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月)
然后我能夠運行流氓“你好世界”。
我還補充說:
轉到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.