我在編譯drools 4項目時遇到問題。我在規則文件中出現錯誤,說在Eclipse中構建Drools 4項目的問題
Only a type can be imported. <<MyClassName>> resolves to a package
增量式編譯器因此無法正常工作。我該如何解決這些錯誤或讓日食忽略它們?
我在編譯drools 4項目時遇到問題。我在規則文件中出現錯誤,說在Eclipse中構建Drools 4項目的問題
Only a type can be imported. <<MyClassName>> resolves to a package
增量式編譯器因此無法正常工作。我該如何解決這些錯誤或讓日食忽略它們?
嗯,我清理了項目並解決了問題。
這個問題是從drools 3.06 to 4.0.7遷移過來的,所以你使用的是什麼版本的eclipse和drools?
這可能與一個classpath issue:
使用我意識到調試器Drools的
PackageBuilder
試圖從
Thread.currentThread().getContextClassLoader();
這
ClassLoader
加載類不包含我的代理類!即使系統類加載器也不包含我的類。
將溶液:
代替創建平原
PackageBuilder
和RuleBase
情況下,一個具有與一個PackageBuilderConfiguration
和RuleBaseConfiguration
兩者與當前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());
確保從規則中使用的MyClassName或任何其他類都在jar文件中,並且該jar文件位於classpath中。
從自己的錯誤中接受自己的答案有點誇張:/ – cflewis