I am getting the following error when I try to run my project:
Root Exception stack trace:
java.lang.LinkageError: loader constraint violation: loader org.mule.runtime.module.artifact.internal.classloader.MulePluginClassLoader @47ac0d38 wants to load class javax.activation.DataHandler. A different class with the same name was previously loaded by jdk.internal.loader.Loader @5b7ee56c. (javax.activation.DataHandler is in module jakarta.activation of loader jdk.internal.loader.Loader @5b7ee56c, parent loader java.net.URLClassLoader @7fd751de)
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:524)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:427)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:421)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:420)
at [email protected]/org.mule.runtime.module.artifact.api.classloader.FineGrainedControlClassLoader.findLocalClass(FineGrainedControlClassLoader.java:175)
at [email protected]/org.mule.runtime.module.artifact.api.classloader.FineGrainedControlClassLoader.loadClass(FineGrainedControlClassLoader.java:87)
at [email protected]/org.mule.runtime.module.artifact.api.classloader.MuleArtifactClassLoader.loadClass(MuleArtifactClassLoader.java:274)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
at org.apache.cxf.attachment.AttachmentImpl.<init>(AttachmentImpl.java:44)
at org.mule.soapkit.soap.server.interceptor.CopyAttachmentOutInterceptor.lambda$transformToCxfAttachments$0(CopyAttachmentOutInterceptor.java:52)
at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721)
at java.base/java.util.Collections$UnmodifiableMap.forEach(Collections.java:1553)
at org.mule.soapkit.soap.server.interceptor.CopyAttachmentOutInterceptor.transformToCxfAttachments(CopyAttachmentOutInterceptor.java:50)
at org.mule.soapkit.soap.server.interceptor.CopyAttachmentOutInterceptor.handleMessage(CopyAttachmentOutInterceptor.java:44)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:90)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.mule.soapkit.soap.server.SoapCxfServer.sendThroughCxf(SoapCxfServer.java:207)
at org.mule.soapkit.soap.server.SoapCxfServer.serve(SoapCxfServer.java:110)
at org.mule.module.soapkit.internal.SoapkitRouterExecutor.execute(SoapkitRouterExecutor.java:74)
at [email protected]/org.mule.runtime.module.extension.internal.runtime.execution.deprecated.ComponentExecutorCompletableAdapterFactory$ComponentExecutorCompletableAdapter.execute(ComponentExecutorCompletableAdapterFactory.java:72)
at [email protected]/org.mule.runtime.module.extension.internal.runtime.operation.DefaultExecutionMediator.executeCommand(DefaultExecutionMediator.java:254)
at [email protected]/org.mule.runtime.module.extension.internal.runtime.operation.DefaultExecutionMediator.executeWithInterceptors(DefaultExecutionMediator.java:237)
at [email protected]/org.mule.runtime.module.extension.internal.runtime.operation.DefaultExecutionMediator.lambda$execute$1(DefaultExecutionMediator.java:144)
at [email protected]/org.mule.runtime.module.extension.internal.runtime.operation.DefaultExecutionMediator.lambda$new$0(DefaultExecutionMediator.java:80)
at [email protected]/org.mule.runtime.module.extension.internal.runtime.operation.DefaultExecutionMediator.withExecutionTemplate(DefaultExecutionMediator.java:335)
at [email protected]/org.mule.runtime.module.extension.internal.runtime.operation.DefaultExecutionMediator.execute(DefaultExecutionMediator.java:143)
at [email protected]/org.mule.runtime.module.extension.internal.runtime.operation.ComponentMessageProcessor.executeOperation(ComponentMessageProcessor.java:578)
at [email protected]/org.mule.runtime.module.extension.internal.runtime.operation.ComponentMessageProcessor.prepareAndExecuteOperation(ComponentMessageProcessor.java:822)
at [email protected]/org.mule.runtime.module.extension.internal.runtime.operation.ComponentMessageProcessor.lambda$onEventSynchronous$16(ComponentMessageProcessor.java:480)
at [email protected]/org.mule.runtime.module.extension.internal.runtime.operation.ComponentMessageProcessor.onEventSynchronous(ComponentMessageProcessor.java:487)
at [email protected]/org.mule.runtime.module.extension.internal.runtime.operation.ComponentMessageProcessor.lambda$createOuterFlux$6(ComponentMessageProcessor.java:396)
at [email protected]/reactor.core.publisher.FluxPeekFuseable$PeekFuseableConditionalSubscriber.onNext(FluxPeekFuseable.java:489)
at [email protected]/reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299)
at [email protected]/reactor.core.publisher.FluxPeekFuseable$PeekFuseableConditionalSubscriber.onNext(FluxPeekFuseable.java:503)
at [email protected]/org.mule.runtime.core.privileged.processor.chain.AbstractMessageProcessorChain$2.onNext(AbstractMessageProcessorChain.java:629)
at [email protected]/org.mule.runtime.core.privileged.processor.chain.AbstractMessageProcessorChain$2.onNext(AbstractMessageProcessorChain.java:624)
at [email protected]/reactor.core.publisher.FluxHide$SuppressFuseableSubscriber.onNext(FluxHide.java:137)
at [email protected]/reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210)
at [email protected]/reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539)
at [email protected]/reactor.core.publisher.FluxSubscribeOnValue$ScheduledScalar.run(FluxSubscribeOnValue.java:180)
at [email protected]/reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
at [email protected]/reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at [email protected]/org.mule.service.scheduler.internal.AbstractRunnableFutureDecorator.doRun(AbstractRunnableFutureDecorator.java:180)
at [email protected]/org.mule.service.scheduler.internal.RunnableFutureDecorator.run(RunnableFutureDecorator.java:55)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
The project runs successfully on Java 8 but throws this error on Java 17.
My requirement is to compile the project in java 8 and run in Java 17.
I searched online and found out that the javax.activation classes have been moved under jakarta.activation from Java 9, and so javax.activation should not be used directly after Java 8.
So I’ve added the following section in my pom.xml:
<bannedDependencies>
<excludes>
<exclude>javax.activation:javax.activation-api</exclude>
<exclude>com.sun.activation:javax.activation</exclude>
<exclude>javax.activation:activation</exclude>
<exclude>jakarta.activation:jakarta.activation-api</exclude>
</excludes>
</bannedDependencies>
This helped me find and exlude all the javax.activation libs from whichever dependencies had them and only keep the ones from com.sun.activation. But nothing seems to be working out.
Any help would be appreciated, thanks!