在Eclipse中构建Drools 4项目的问题

时间:2009-09-09 09:24:28

标签: java eclipse drools building

我在编写一个drools 4项目时遇到了麻烦。我在规则文件中遇到错误

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

由于这个原因,增量编译器无法正常工作。如何修复错误或让eclipse忽略它们?

3 个答案:

答案 0 :(得分: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());

答案 1 :(得分:1)

确保您从规则中使用的MyClassName或任何其他类位于jar文件中,并且jar文件位于类路径中。

答案 2 :(得分:-1)

嗯,我清理了项目并解决了问题。