2

我在编译 drools 4 项目时遇到问题。我在规则文件中收到错误说

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

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

4

3 回答 3

2

从drools 3.06 迁移到 4.0.7时提到了这个问题,那么您使用的是什么版本的 eclipse 和 drools?

这可能与类路径问题有关:

使用调试器我意识到 DroolsPackageBuilder试图从

Thread.currentThread().getContextClassLoader();

ClassLoader不包含我的代理类!甚至系统类加载器也不包含我的类。

解决方案是:

不必创建普通PackageBuilderRuleBase实例,而是必须使用当前配置的 aPackageBuilderConfiguration和 a来创建它们:RuleBaseConfigurationclassLoader

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());
于 2009-09-09T10:17:59.453 回答
1

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

于 2011-08-16T18:41:31.453 回答
-1

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

于 2009-09-15T14:59:06.430 回答