REST request with XStream payload for Spring Boot kie-server application fails with exception " java.lang.NoClassDefFoundError"

Solution Verified - Updated -

Issue

REST request with XStream payload for Spring Boot kie-server application fails with the following exception :

2022-03-10 08:00:01.019,[WARN],host01,[http-nio-0.0.0.0-8090-exec-5],Application {http://resource.common.rest.remote.server.kie.org/}KieServerRestImpl has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Lorg/apache/avalon/framework/logger/Logger;
        at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:162)
        at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:128)
        at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:193)
        at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:103)
        at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)
        at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
        at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
        at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267)
        at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
        at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
        at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
        at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:216)
        at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:301)
        at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:220)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
 ...
Caused by: java.lang.NoClassDefFoundError: Lorg/apache/avalon/framework/logger/Logger;
        at java.base/java.lang.Class.getDeclaredFields0(Native Method)
        at java.base/java.lang.Class.privateGetDeclaredFields(Class.java:3061)
        at java.base/java.lang.Class.getDeclaredFields(Class.java:2248)
        at com.thoughtworks.xstream.mapper.AnnotationMapper.processTypes(AnnotationMapper.java:205)
        at com.thoughtworks.xstream.mapper.AnnotationMapper.processAnnotations(AnnotationMapper.java:165)
        at com.thoughtworks.xstream.XStream.processAnnotations(XStream.java:2218)
        at com.thoughtworks.xstream.XStream.processAnnotations(XStream.java:2229)
        at org.kie.server.api.marshalling.xstream.XStreamMarshaller.configureMarshaller(XStreamMarshaller.java:239)
        at org.kie.server.api.marshalling.xstream.XStreamMarshaller.<init>(XStreamMarshaller.java:115)
        at org.kie.server.api.marshalling.BaseMarshallerBuilder.build(BaseMarshallerBuilder.java:39)
        at org.kie.server.api.marshalling.MarshallerFactory.getMarshaller(MarshallerFactory.java:50)
        at org.kie.server.services.impl.KieContainerInstanceImpl.getMarshaller(KieContainerInstanceImpl.java:184)
        at org.kie.server.services.impl.marshal.MarshallerHelper.unmarshal(MarshallerHelper.java:103)
        at org.kie.server.services.impl.marshal.MarshallerHelper.unmarshal(MarshallerHelper.java:88)
        at org.kie.server.services.jbpm.ProcessServiceBase.startProcess(ProcessServiceBase.java:110)
        at org.kie.server.remote.rest.jbpm.ProcessResource.startProcess(ProcessResource.java:181)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:179)
        at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
        ... 90 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.apache.avalon.framework.logger.Logger
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
        at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    ... 112 common frames omitted

The class causing the java.lang.ClassNotFoundException is one of the following three classes, which are changed randomly at each application launch.
- org.apache.avalon.framework.logger.Logger
- org.apache.log.Logger
- org.apache.log4j.Priority

This issue happens on some environment but not on the other environments.
How to solve this?

Environment

  • Red Hat Process Automation Manager
    • 7.11.1
  • Spring Boot(v2.3.4.RELEASE) kie-server application based on https://start.jbpm.org/

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content