Mirth Connect读取MySQL转HL7文件配置方法及部署报错咨询
Mirth Connect读取MySQL转HL7部署报错解决方案
问题描述
我需要实现在Mirth Connect中读取MySQL数据库并将查询结果转换为HL7文件,目前已完成如下配置操作:
- 源端(Source)添加了简单的数据库读取器,如下图所示:

- 摘要(Summary)选项卡中的数据类型配置如下:

- 目标端(Destination)设置为文件写入器(File writer),并配置了输出文件夹路径与文件名:

尝试部署该通道(Channel)时出现如下报错:
[2021-09-16 12:38:20,001] ERROR (org.quartz.core.JobRunShell:222): Job d7444f3c-249a-4e4f-b3b2-1862ac874cbc.PollConnectord7444f3c-249a-4e4f-b3b2-1862ac874cbc threw an unhandled Exception: java.lang.IllegalAccessError: class com.mirth.connect.connectors.jdbc.DatabaseReceiverQuery (in unnamed module @0x2ca26d77) cannot access class com.sun.rowset.CachedRowSetImpl (in module java.sql.rowset) because module java.sql.rowset does not export com.sun.rowset to unnamed module @0x2ca26d77 at com.mirth.connect.connectors.jdbc.DatabaseReceiverQuery.poll(DatabaseReceiverQuery.java:195) at com.mirth.connect.connectors.jdbc.DatabaseReceiver.poll(DatabaseReceiver.java:134) at com.mirth.connect.donkey.server.channel.PollConnectorJob.execute(PollConnectorJob.java:49) at org.quartz.core.JobRunShell.run(JobRunShell.java:213) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
报错原因
该错误是Java 9及以上版本引入的模块系统导致的:低版本Mirth Connect的JDBC连接器依赖了Sun公司的内部类com.sun.rowset.CachedRowSetImpl,而Java 9+默认不允许未命名模块访问java.sql.rowset模块下的内部非导出包,因此触发访问权限错误。
解决方案
可任选以下一种方式解决:
- 方案1:升级Mirth Connect版本
升级到Mirth Connect 3.9及以上正式版本,该版本开始已修复此问题,不再依赖JDK内部类,使用标准JDBC接口实现数据读取。 - 方案2:添加JVM启动参数(无需升级版本)
找到Mirth Connect的启动配置文件:- Windows系统:找到安装目录下的
mirthconnect.vmoptions或mcservice.vmoptions - Linux系统:找到启动脚本中
JAVA_OPTS对应的配置位置
新增一行启动参数:
保存后重启Mirth Connect服务即可生效。--add-exports java.sql.rowset/com.sun.rowset=ALL-UNNAMED - Windows系统:找到安装目录下的
- 方案3:切换运行的JDK版本
将运行Mirth Connect的JDK版本切换为Java 8,Java 8没有模块系统限制,不会触发该权限错误。
内容的提问来源于stack exchange,提问作者tGitm
相关产品推荐
相关产品推荐

