Mirth 3.6.0, Java 10
原因:java.lang.NoClassDefFoundError: javax/activation/DataSource
你好
我在尝试通过 Mirth 发送电子邮件时收到上述错误。我读过Java 10中缺少一个类,但我找不到成功解决此问题的明确说明。任何帮助将不胜感激。
在 JDK 9 和 JDK 10 中,包含 CORBA 或 API 的模块 在以下情况下,默认情况下不会解析 Java SE 和 Java EE 之间的共享 在类路径上编译或运行代码。这些模块是 已弃用以删除。不解析这些模块的策略是 从 Java SE 和 JDK 中删除这些 API 的第一步 将来发布。已弃用的模块包括:
- java.corba — CORBA
- java.transaction — Java 的子集 由 Java SE 定义的事务 API,用于支持 CORBA 对象事务服务
- java.activation — JavaBeans Activation Framework
- java.xml.bind — Java Architecture for XML Binding (JAXB(
java.xml.ws — Java API for XML Web Services (- JAX-WS(、Web Services Metadata for the Java Platform 和 SOAP with Attachments for Java (SAAJ(
- java.xml.ws.annotation — Java SE 定义的 JSR-250 通用注解的子集,用于支持 Web 服务
引用这些 API 中的类的现有代码不会 在不更改内部版本的情况下进行编译。同样,类上的代码 引用这些 API 中的类的路径将失败,并显示 NoDefClassFoundError 或 ClassNotFoundException,除非进行了更改 在应用程序的部署方式上。
请参阅 JEP 320:删除 Java EE 和 CORBA 模块,以获取有关迁移选项、模块的可能替换以及跟踪 从 JDK 中删除 Java EE 和 CORBA 模块的进展。
源
您有两种选择:
- 正如 Oracle 迁移指南建议在 JVM 启动期间使用
--add-modules java.activation
选项。您可以在mirth.properties
为Mirth Connect设置此设置
或
- 将 JavaBeans 激活框架 (JAF( 添加到依赖项中。在 Mirth Connect 中,您可以将此 JAR 添加到资源目录中,并使您的频道依赖于该资源