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 RuleBaseConfigurationboth でそれらを作成する必要があります。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());
于 2009-09-09T10:17:59.453 に答える