Drools访问生成的java文件

Drools访问生成的java文件,java,drools,Java,Drools,我正在通过Mockito测试执行Drools规则。该规则在运行时报告错误时失败,因为java文件的行号具有一些长的任意名称。Drools似乎可以动态生成java文件并注入JVM。但当我在光盘上搜索这些文件时,我没有找到任何文件。有没有办法将它们存储在光盘上?找到了解决方案: 您可以通过两种方式转储Drools生成的java文件 1) 通过命令行: -Ddrools.dump.dir="target/dumpDir" e、 我使用maven命令来执行规则,因此 mvn -Ddrools.dump

我正在通过Mockito测试执行Drools规则。该规则在运行时报告错误时失败,因为java文件的行号具有一些长的任意名称。Drools似乎可以动态生成java文件并注入JVM。但当我在光盘上搜索这些文件时,我没有找到任何文件。有没有办法将它们存储在光盘上?

找到了解决方案:

您可以通过两种方式转储Drools生成的java文件

1) 通过命令行:

-Ddrools.dump.dir="target/dumpDir"
e、 我使用maven命令来执行规则,因此

mvn -Ddrools.dump.dir="target/dumpDir" -Dtest=DroolsRuleTest test
2) 通过API

public class FileKnowledgeBaseFactory implements KnowledgeBaseFactory {
    private Log log = LogFactory.getLog(FileKnowledgeBaseFactory.class);

    public KnowledgeBase load(String drlFullFilename) {
        KnowledgeBuilderConfiguration config = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
        config.setOption(DumpDirOption.get(new File("target/dumpDir")));

        KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(config);

        ....
        ....
    }
}

你的错误是什么?如果它正在编译文件,它可能会将它们存储在一个临时位置,并在完成时将它们清理干净——因此您永远也找不到它们。但是,错误应该指向其输出中的某个实际类文件。这应该是规则编译错误,而不是运行时(规则执行时)错误。在Mockito之外编译DRL文件,当您向构建器询问累积的错误时,您应该会看到一条错误消息。