Java 已更新*.drl,但更改未生效

Java 已更新*.drl,但更改未生效,java,drools,Java,Drools,当编译器读取*.drl文件时,或者哪一行代码正在读取*.drl,并且我想在程序执行时更新*.drl,然后我对程序生效 public static void main(String[] args) throws InterruptedException { KnowledgeBase kbase = createKnowledgeBase(); StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession(

当编译器读取*.drl文件时,或者哪一行代码正在读取*.drl,并且我想在程序执行时更新*.drl,然后我对程序生效

public static void main(String[] args) throws InterruptedException {
    KnowledgeBase kbase = createKnowledgeBase();
    StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
    Account account = new Account();
    account.setBalance(99);
    account.setId("N1");
    Account account2 = new Account();
    account2.setBalance(12);
    account2.setId("N2");
    session.insert(account);
    session.insert(account2);

    session.fireAllRules();
}

private static KnowledgeBase createKnowledgeBase() throws InterruptedException {
    KnowledgeBuilder builder = KnowledgeBuilderFactory
            .newKnowledgeBuilder();
    //File accountRules = new File("rules.drl");
    System.out.println("**Before Thread****");
    Thread.sleep(50000);
    System.out.println("***After Theread****");
    builder.add(ResourceFactory.newClassPathResource("com/iton/rules/rules.drl"), ResourceType.DRL);
    if (builder.hasErrors()) {
        throw new RuntimeException(builder.getErrors().toString());
    }

    KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();
    knowledgeBase.addKnowledgePackages(builder.getKnowledgePackages());
    return knowledgeBase;
}

}

如果我正确理解了问题,根据上面的代码,如果您更改了.drl文件,则需要再次运行createKnowledgeBase方法。程序处于运行状态,我已更改*.drl如果您希望Drools在运行时自动重新加载drl,则应以其他方式将其反映到程序中,然后,您需要更改代码以使用知识代理来管理知识库: