Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Eclipse中构建Drools 4项目时遇到的问题_Java_Eclipse_Drools_Building - Fatal编程技术网

Java 在Eclipse中构建Drools 4项目时遇到的问题

Java 在Eclipse中构建Drools 4项目时遇到的问题,java,eclipse,drools,building,Java,Eclipse,Drools,Building,我在编译drools 4项目时遇到问题。规则文件中有个错误,说 Only a type can be imported. <<MyClassName>> resolves to a package 只能导入类型。解析为一个包 因此,增量编译器无法工作。如何修复这些错误或让eclipse忽略它们?这个问题是在从中迁移时提到的,那么您使用的是什么版本的eclipse和drools 这可能与以下情况有关: 使用调试器,我意识到DroolsPackageBuilder试图从

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

Only a type can be imported. <<MyClassName>> resolves to a package 
只能导入类型。解析为一个包

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

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

这可能与以下情况有关:

使用调试器,我意识到Drools
PackageBuilder
试图从

ClassLoader
不包含我的代理类!即使系统类加载器也不包含我的类

解决办法是:

与其创建普通的
PackageBuilder
RuleBase
实例,不如使用
PackageBuilderConfiguration
RuleBaseConfiguration
创建它们,并配置当前的
classLoader


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

请确保规则中使用的MyClassName或任何其他类位于jar文件中,jar文件位于classpath中。

您好,感谢您的回复。我的同事collegue刚刚告诉我,我们没有迁移,我们一直使用Drools版本4。对不起,我应该说得很清楚,以免你打出来。从你自己的错误中接受你自己的答案有点愚蠢:/
Thread.currentThread().getContextClassLoader();
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());