You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mule 4.9使用Log4j JMS Appender对接ActiveMQ时的javax与jakarta JMS包冲突问题求助

Mule 4.9使用Log4j JMS Appender对接ActiveMQ时的javax与jakarta JMS包冲突问题求助

我刚接触Mule,最近在尝试用Log4j的JMS Appender把日志推送到ActiveMQ队列,过程中碰到了包依赖的棘手问题,想请大家帮忙看看!

之前在Mule 4.3的情况

一开始在Mule 4.3版本配置JMS Appender时,直接报了错误:

2025-06-05T07:02:25.588889200Z WrapperListener_start_runner ERROR Could not create plugin of type class org.apache.logging.log4j.core.appender.mom.JmsAppender for element JMS: java.lang.NoClassDefFoundError: javax/jms/JMSException
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2025-06-05T07:02:25.590884400Z WrapperListener_start_runner ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.mom.JmsAppender for element JMS: java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.mom.JmsAppender
java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.mom.JmsAppender
at org.apache.logging.log4j.core@2.24.2/org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:268)
at org.apache.logging.log4j.core@2.24.2/org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:140)

查了资料后找到了解决方法:把javax.jms-api.2.0.1.jar放到mule/lib/boot目录下,错误就消失了,功能也正常跑起来了。

升级到Mule 4.9后的新问题

结果最近把Mule版本升级到4.9之后,新的问题又来了,启动时报错:

WrapperManager: Initializing...
Running Mule in testing mode
java.lang.module.ResolutionException: Modules javax.jms.api and jakarta.jms.api export package javax.jms to module org.apache.maven.resolver.transport.wagon
at java.base/java.lang.module.Resolver.resolveFail(Resolver.java:901)
at java.base/java.lang.module.Resolver.failTwoSuppliers(Resolver.java:815)
at java.base/java.lang.module.Resolver.checkExportSuppliers(Resolver.java:736)

我自己分析了下,应该是javax.jms和jakarta.jms的包都导出了同一个javax.jms包,导致模块系统冲突。但奇怪的是,我自己的项目pom.xml里并没有引入jakarta.jms的依赖,会不会是Mule 4.9的runtime自动包含了这个依赖?

现在陷入了两难:

  • 如果删掉mule/lib/boot下的javax.jms-api.2.0.1.jar,就会回到最初的NoClassDefFoundError
  • 但保留这个jar,就会触发上面的模块冲突错误

附上我当前项目的pom.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>test</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>mule-application</packaging>
<name>test</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<app.runtime>4.4.0-20230320</app.runtime>
<mule.maven.plugin.version>3.8.2</mule.maven.plugin.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.mule.tools.maven</groupId>
<artifactId>mule-maven-plugin</artifactId>
<version>${mule.maven.plugin.version}</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.mule.connectors</groupId>
<artifactId>mule-http-connector</artifactId>
<version>1.7.3</version>
<classifier>mule-plugin</classifier>
</dependency>
<dependency>
<groupId>org.mule.connectors</groupId>
<artifactId>mule-sockets-connector</artifactId>
<version>1.2.3</version>
<classifier>mule-plugin</classifier>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.16.0</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>anypoint-exchange-v3</id>
<name>Anypoint Exchange</name>
<url>https://maven.anypoint.mulesoft.com/api/v3/maven</url>
<layout>default</layout>
</repository>
<repository>
<id>mulesoft-releases</id>
<name>MuleSoft Releases Repository</name>
</repository>
</repositories>
</project>

有没有朋友碰到过类似的问题?或者知道怎么解决Mule 4.9下Log4j JMS Appender和ActiveMQ的依赖冲突问题?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 07:54:33