代码之家  ›  专栏  ›  技术社区  ›  Tarski

Eclipse中构建Drools4项目的问题

  •  2
  • Tarski  · 技术社区  · 15 年前

    我在编写一个Drools4项目时遇到了麻烦。我在规则文件中发现错误,说

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

    因此增量编译器不工作。如何修复错误或让Eclipse忽略它们?

    3 回复  |  直到 13 年前
        1
  •  2
  •   Rich Seller    15 年前

    此问题是针对从 drools 3.06 to 4.0.7 ,那么您使用的是Eclipse和Drools的哪个版本?

    这可能与 classpath issue :

    使用调试器,我意识到流口水 PackageBuilder 尝试从中加载类

    Thread.currentThread().getContextClassLoader();
    

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

    解决方案是:

    而不是创造平原 打包生成器 RuleBase 实例,必须使用 PackageBuilderConfiguration 和A 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());
    
        2
  •  1
  •   Arindam Das    13 年前

    确保从规则中使用的myclassname或任何其他类位于JAR文件中,而JAR文件位于类路径中。

        3
  •  -1
  •   Tarski    15 年前

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