2010-07-21 48 views
5

我剛剛在Eclipse(版本3.5.2)中安裝了Drools plug-in,我嘗試運行「Hello世界「插件附帶的例子。無法在Eclipse中運行「Hello World」Drools示例:運行時異常org.drools.RuntimeDroolsException:無法加載方言

當我運行代碼,我得到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; 
} 

回答

7

你錯過了Eclipse JDT核心jar在你的classpath中。如果您不使用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中找到,如果您使用的是JDK 1.7或以上開拓drools-5.1.1-docs.zip\drools-flow\html\ch.Drools_Eclipse_IDE_Features.html

+0

克里斯 - 感謝您給我們的信息!我手動添加了jar,現在一切都完美了! – user396377 2010-07-21 18:24:28

+0

我在我的類路徑中有JDT核心 - 它在插件目錄中,並且是一個小版本的區別(我在org.eclipse.jdt.core_3.6.0.v_A58.jar中實現了Eclipse的插件目錄 - 實際上org.eclipse.jdt.core_3.6.1.v_A68_R36x.jar現在也存在,因爲我一直在嘗試更新之前的jar,但這會破壞Eclipse)。儘管如此,我仍然得到相同的錯誤: 無法加載方言'org.drools.rule.builder.dialect.java.JavaDialectConfiguration:java'....等 – 2011-10-28 04:54:13

+0

我解決了我的問題:它基本上是JDT有問題,我需要從Helios下的Install New Software菜單選項更新JBoss Drools Core。另外,還可以使用JBoss的URL來獲得特定的Eclipse版本 - 這可以在http://www.jboss.org/tools/download.html找到。我的問題是,我試圖直接安裝罐子,因爲我找不到上面提到的網址,但我可以找到我認爲正確的罐子。哦,好吧....爲您的版本找到合適的包裝。 – 2011-10-28 05:41:44

1

,你會設置一個參數之前創建JVM因爲Drools的上JNI4NET樣品使用的是5.1版本,它不適用於JDK 1.7或更高版本。

嘗試使用這一行之前創建JVM:

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

於是,我終於開始了。

我做了以下(2014年4月)

  1. 清潔開始安裝Eclipse開普勒
  2. 轉至Eclipse的市場和搜索 「的JBoss Developer Studio中(開普勒)」,然後安裝「紅「JBoss Developer Studio(Kepler)7.1.1.GA」(您的版本可能有所不同)
  3. 重新啓動Eclipse
  4. 轉到Eclipse Marketplace並搜索「JBoss Developer Studio(Kepler)」,然後安裝:「JBoss Tools開普勒)4.1.2.Final「(您的版本可能會有所不同)
  5. 重新啓動Eclipse。
  6. 安裝「drools」。轉到Eclipse菜單,然後選擇「幫助」/「安裝新軟件」並添加下面的URL。 Drools_UpdateSite - http://download.jboss.org/drools/release/6.0.0.Final/org.drools.updatesite/ 我安裝了每個選項。
  7. 重新啓動Eclipse。
  8. 轉到新項目並添加一個新的「Drools項目」。

然後我能夠運行drools「hello world」。

我還補充說:

轉到Eclipse菜單,然後選擇「幫助」 /「安裝新軟件」,並添加下面的網址。

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

和安裝

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