【发布时间】:2020-03-30 12:05:40
【问题描述】:
我有两个罐子。一个提供服务接口和服务加载类,一个提供该服务的实现。
这在 jdk8 中运行时完美运行,但在 jdk9 或更高版本上运行时出现service type not accessible to unnamed module @3754a4bf 错误。
我将这两个 jar 迁移到一个模块基础 jar,并且在 >= jdk9 上运行时效果很好,但由于错误的类文件版本,在 jdk8 上失败了。
所以,我在 java 8 或 9 中使用 java serivceloader api 没有问题。
我知道 https://blog.codefx.org/tools/multi-release-jars-multiple-java-versions/ ,但我想避免使构建过程更加复杂。构建已经涉及类重定位和 其他东西。
我的问题:有没有办法使用 java serviceloading api 使用在 jdk8 和 >=jdk9 上运行的相同 jar?
【问题讨论】:
-
MR-Jar 应该是一个可以用于多个版本的 jar。只是为了确认 - 这里是the JEP。例如,
log4j-api-2.9.0.jaris-a-multi-release-jar。 -
@Naman:谢谢指出,更新问题
标签: java java-module serviceloader