SteveK
SteveK

Reputation: 11

drools-7.23.0.Final KieContainerImpl KieBaseException

In running my application, I receive an error: Cannot find a default KieBaseException! called from KieContainerImpl.

I cannot find KieContainerImpl in the source code for drools-7.23.0.Final.

I have searched the source code org.kie.api.KieBase and drools.compiler.builder.imp, but unable to find KieContainerImpl

try
    {
        kContainer = ks.newKieContainer();
        System.out.println("\ninitialized KieContainer:\t" + kContainer);

        // Verify that kContainer was properly loaded
        Results results = kContainer.verify();

        ...

        /*
         * A KieBase represents a compiled version of a set of assets.
         */
        kBase = kContainer.getKieBase();
        System.out.println("\ninitialized kBase:\n" + kBase);
    }
    catch (NoClassDefFoundError e)
    {
       e.printStackTrace();
    }
    catch (Exception ex)
    {
        System.out.println("Exception!");
        ex.printStackTrace();
    }

I expected the verify function to work. Here is the result:

    initialized KieContainer:   org.drools.compiler.kie.builder.impl.KieContainerImpl@767e20cf
Exception!
java.lang.RuntimeException: Cannot find a default KieBaseException at org.drools.compiler.kie.builder.impl.KieContainerImpl.getKieBase(KieContainerImpl.java:553)
    at chemistryAdvisor.ChemistryAdvisor.initializeRuleEngine(ChemistryAdvisor.java:477)
    at chemistryAdvisor.ChemistryAdvisor.main(ChemistryAdvisor.java:227)
java.lang.RuntimeException: Cannot find a default KieSession
    at org.drools.compiler.kie.builder.impl.KieContainerImpl.findKieSessionModel(KieContainerImpl.java:684)
    at org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:677)
    at org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:660)
    at chemistryAdvisor.ChemistryAdvisor.initializeRuleEngine(ChemistryAdvisor.java:496)
    at chemistryAdvisor.ChemistryAdvisor.main(ChemistryAdvisor.java:227)
Welcome to ChemistryAdvisor!

Upvotes: 1

Views: 518

Answers (1)

Esteban Aliverti
Esteban Aliverti

Reputation: 6322

When invoking kContainer.getKieBase(); without specifying any parameter, Drools expects to find a KieBase marked as default in your kmodule.xml.

Take a look at my answer in this other question.

Hope it helps,

Upvotes: 2

Related Questions