1
我正在通過Mockito測試執行Drools規則。該規則在運行時失敗,報告具有長的任意名稱的java文件的行號。看起來Drools正在生成Java文件並注入到JVM中。但是當我在光盤上搜索這些文件時,我找不到任何文件。有沒有辦法將它們存儲在我的光盤上?Drools訪問生成的java文件
我正在通過Mockito測試執行Drools規則。該規則在運行時失敗,報告具有長的任意名稱的java文件的行號。看起來Drools正在生成Java文件並注入到JVM中。但是當我在光盤上搜索這些文件時,我找不到任何文件。有沒有辦法將它們存儲在我的光盤上?Drools訪問生成的java文件
得到了解決:
你可以轉儲Drools的產生有兩種方式java文件。
1)通過命令行:
-Ddrools.dump.dir="target/dumpDir"
例如我用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);
....
....
}
}
我們可以像螞蟻一樣使用mvn嗎? –
什麼是你得到的錯誤?如果它正在編譯文件,它可能會將它們存儲在臨時位置並在完成時進行清理 - 所以你永遠不會找到它們。然而,錯誤應該指向輸出中某處的實際類文件。 –
這應該是規則編譯錯誤,而不是運行時(規則執行時間)錯誤。在Mockito之外編譯DRL文件,當您向構建器詢問累積錯誤時,您應該看到一條錯誤消息。 – laune
我得到NullPointerException這不看任何意思規則編譯錯誤。 –