2009-09-09 41 views
2

我在編譯drools 4項目時遇到問題。我在規則文件中出現錯誤,說在Eclipse中構建Drools 4項目的問題

Only a type can be imported. <<MyClassName>> resolves to a package 

增量式編譯器因此無法正常工作。我該如何解決這些錯誤或讓日食忽略它們?

回答

-1

嗯,我清理了項目並解決了問題。

+2

從自己的錯誤中接受自己的答案有點誇張:/ – cflewis

2

這個問題是從drools 3.06 to 4.0.7遷移過來的,所以你使用的是什麼版本的eclipse和drools?

這可能與一個classpath issue

使用我意識到調試器Drools的PackageBuilder試圖從

Thread.currentThread().getContextClassLoader(); 

ClassLoader加載類不包含我的代理類!即使系統類加載器也不包含我的類。

將溶液:

代替創建平原PackageBuilderRuleBase情況下,一個具有與一個PackageBuilderConfigurationRuleBaseConfiguration兩者與當前classLoader配置創建它們:

ClassLoader classLoader = this.getClass().getClassLoader(); 

PackageBuilderConfiguration configuration = new PackageBuilderConfiguration(); 
configuration.setClassLoader(classLoader); 

PackageBuilder builder = new PackageBuilder(configuration); 

builder.addPackageFromDrl(source); 

RuleBaseConfiguration ruleBaseConfiguration = new RuleBaseConfiguration(); 
ruleBaseConfiguration.setClassLoader(classLoader); 

ruleBase = RuleBaseFactory.newRuleBase(ruleBaseConfiguration); 
ruleBase.addPackage(builder.getPackage()); 
+0

@非常感謝您解決這個錯字。 – VonC

+0

嗨,謝謝你的迴應。我的工作同事告訴我,我們沒有遷移,並且我們一直在使用Drools版本4.對不起,我應該明確說明這一點,以免你輸入。 – Tarski

1

確保從規則中使用的MyClassName或任何其他類都在jar文件中,並且該jar文件位於classpath中。