I have a project using Drools 4.x. I've migrated the code to use the 6.4.0 API. But when running code:
SpreadsheetCompiler compiler = new SpreadsheetCompiler();
String drl = compiler.compile(getFileAsStream(ruleName), InputType.XLS);
kfs.write(ruleName, drl);
KieBuilder kieBuilder = kieServices.newKieBuilder(kfs);
kieBuilder.buildAll();
if (kieBuilder.getResults().hasMessages(org.kie.api.builder.Message.Level.ERROR)) {
throw new RuntimeException("Build time Errors: " + kieBuilder.getResults().toString());
}
kieContainer = kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId());
it bombs on .buildAll(), as shown below:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/dev/tomcat/apache-tomcat-8.0.18/lib/logback-classic-1.0.9.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/dev/tomcat/apache-tomcat-8.0.18/lib/slf4j-jdk14-1.7.21.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/dev/projects/dls-3.10.0/lib/logback-classic-1.0.9.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See
http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
hostname for logging: hdqitsl480772
envName for logging: null
logEnv for logging: null
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
Sep15 13:56:01.553 INFO [CreateRuleBaseObjects ][::] - Current dir : C:\dev\projects\dls-3.10.0
Sep15 13:56:01.556 INFO [CreateRuleBaseObjects ][::] - Parent dir : C:\dev\projects
Sep15 13:56:01.558 INFO [CreateRuleBaseObjects ][::] - Build kieContainer for source file: /properties/txdps/dl/bpr/li/rules/DetermineTransactionEligibility_ADMIN.xls
Exception in thread "main" java.lang.NoSuchMethodError: org.codehaus.plexus.DefaultContainerConfiguration.setAutoWiring(Z)Lorg/codehaus/plexus/ContainerConfiguration;
at org.kie.scanner.embedder.MavenEmbedderUtils.buildPlexusContainer(MavenEmbedderUtils.java:122)
at org.kie.scanner.embedder.PlexusComponentProvider.<init>(PlexusComponentProvider.java:37)
at org.kie.scanner.embedder.MavenEmbedderUtils.buildComponentProvider(MavenEmbedderUtils.java:56)
at org.kie.scanner.embedder.MavenEmbedder.<init>(MavenEmbedder.java:81)
at org.kie.scanner.embedder.MavenEmbedder.<init>(MavenEmbedder.java:75)
at org.kie.scanner.embedder.MavenProjectLoader.newMavenEmbedder(MavenProjectLoader.java:66)
at org.kie.scanner.embedder.MavenProjectLoader.parseMavenPom(MavenProjectLoader.java:53)
at org.kie.scanner.embedder.MavenProjectLoader.parseMavenPom(MavenProjectLoader.java:49)
at org.kie.scanner.MavenPomModelGenerator.parse(MavenPomModelGenerator.java:33)
at org.drools.compiler.kproject.xml.PomModel$Parser.parse(PomModel.java:110)
at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildPomModel(KieBuilderImpl.java:455)
at org.drools.compiler.kie.builder.impl.KieBuilderImpl.getPomModel(KieBuilderImpl.java:432)
at org.drools.compiler.kie.builder.impl.KieBuilderImpl.init(KieBuilderImpl.java:134)
at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:169)
at txdps.dl.bpr.common.rulesengine.CreateRuleBaseObjects.getKieContainer(CreateRuleBaseObjects.java:122)
at txdps.dl.bpr.common.rulesengine.CreateRuleBaseObjects.createCachedFilesForRuleBaseObject(CreateRuleBaseObjects.java:48)
at txdps.dl.bpr.common.rulesengine.CreateRuleBaseObjects.main(CreateRuleBaseObjects.java:149)
I have tried updating many of the jars with no luck. I had to add plexus-container-default because without it, it thows a different error:
Caused by: java.lang.ClassNotFoundException: org.codehaus.plexus.component.repository.exception.ComponentLookupException
That was the first error I encountered with the jar libs that came in the distribution.
I noticed another message mentioning the fact that the maven embedder utils is using an ancient library. Looks like this hasn't been fixed?