When I upgraded the dependency org.codehaus.plexus:plexus-utils
from 3.5.1 to 4.0.1, I started getting the error below when the method kieBuilder.buildAll();
gets executed.
Error:
NoClassDefFound Could not initialize class org.appformer.maven.integration.embedder.MavenSettings$SettingsHolder
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoClassDefFoundError: org/codehaus/plexus/util/xml/pull/XmlPullParserException
pom.xml:
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>3.1.12</version>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
<version>7.73.0.Final</version>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-ci</artifactId>
<version>7.73.0.Final</version>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-internal</artifactId>
<version>7.73.0.Final</version>
</dependency>
Java Code:
@Service
public class MyClass {
private KieServices kieServices;
@PostConstruct
public void init() {
kieServices = KieServices.get();
}
private KieBuilder build(String namespace, String ruleSet, String content) {
KieFileSystem kieFileSystem = kieServices
.newKieFileSystem()
.generateAndWritePomXML(generateReleaseId(namespace, ruleSet))
.write("src/main/resources/" + UUID.randomUUID() + "/ruleset.drl", content);
KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem);
kieBuilder.buildAll();
return kieBuilder;
}
private ReleaseId generateReleaseId(String namespace, String ruleSet) {
return kieServices.newReleaseId(namespace, ruleSet, "1");
}
}
Any idea why I started getting this error?
Try to add this dependency to your maven pom:
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-xml</artifactId>
<version>4.0.4</version>
</dependency>
This adds the Plexus XML Utils to your dependencies.