NoSuchMethodError in 6.4.0 use of MavenEmbedderUtils / Plexus

280 views
Skip to first unread message

arnie....@mac.com

unread,
Sep 15, 2016, 3:04:29 PM9/15/16
to Drools Setup
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?

arnie....@mac.com

unread,
Sep 15, 2016, 5:19:00 PM9/15/16
to Drools Setup
Ok, found what I was doing wrong. The requisite files are included, just some of their names are confusing and there's no cross-reference to show which ones are used when using a given subsystem.

Silpa Services

unread,
Jan 12, 2020, 4:32:07 PM1/12/20
to Drools Setup
I know this is ages old. But I am having the exact same issue, with similar code, it would be very helpful if you can elaborate how you fixed it.
Reply all
Reply to author
Forward
0 new messages