Java升级至21后Mirth Connect触发SOAP请求报SAAJ元工厂错误
Mirth Connect 4.5.2 + Java 21 SOAP请求失败问题解决
问题根源
- Java版本不兼容:Mirth Connect 4.5.2官方仅支持Java 8、11、17,Java 18及以上版本不在官方兼容列表内,这是触发问题的核心原因之一。
- SAAJ内部API被移除:Java 16及后续版本砍掉了
com.sun.xml.internal.messaging.saaj这类JDK自带的内部SAAJ实现API,而Mirth的SOAP组件原本依赖这些类,升级到Java 21后自然找不到对应类,引发报错。
解决办法
办法1:切回兼容的Java版本
直接将Java运行时换回17(或官方支持的8/11版本),这是最稳妥的操作,能立刻恢复SOAP功能,同时避免其他未知兼容性问题。
办法2:适配Jakarta SAAJ依赖(临时 workaround,不保证长期稳定)
如果必须使用Java 21,可以尝试调整依赖包配置:
- 先删除你之前放入
C:\Program Files\Mirth Connect\server-lib目录的saaj-impl-1.5.3.jar、jakarta.xml.soap-api-1.4.2.jar、activation-1.1.1.jar,这些版本与Java 21不匹配。 - 下载适配Jakarta EE 9+的版本:
jakarta.xml.soap-api-2.0.1.jar和saaj-impl-2.0.1.jar(注意选择Jakarta命名空间的版本,而非旧的javax版本)。 - 将这两个jar包放入
C:\Program Files\Mirth Connect\custom-lib目录(不要放server-lib,custom-lib的加载优先级更高,可覆盖Mirth自带的旧依赖)。 - 重启Mirth Connect服务,测试SOAP请求是否恢复正常。
补充说明
- Mirth Connect并未停止对SOAP的支持,问题仅源于高版本Java移除了它依赖的内部API,且官方暂未适配Java 18+版本。
- 办法2属于非官方兼容手段,后续Mirth版本更新或复杂业务场景下可能出现其他问题,优先选择办法1更可靠。
内容的提问来源于stack exchange,提问作者naban Padma
相关产品推荐
相关产品推荐

