首页 > 解决方案 > 如果目标级别为 8,我可以使用 module-info.java 吗?

问题描述

我知道 jdk9+ 可以识别 module-info.java

但是我想知道 module-info.java 是否仍然可以与目标级别 8 结合使用。

例如,我希望我的库用于 java9+ 项目,它会将其识别为导出特定包的模块,但也可以在 java8 项目中作为普通 jar 文件使用。

标签: javajava-9java-platform-module-systemmodule-infomulti-release-jar

解决方案


Multi-Release JAR 文件本身用于完全相同的目的。

不支持 MRJARs 的 JDK 中只有根目录中的类和资源是可见的,并且这两种封装是无法区分的。

支持 MRJAR 的 JDK 中,对应于任何更高版本的 Java 平台版本的目录将被忽略;它将首先在与 当前运行的主要 Java 平台发布版本相对应的 Java 平台特定目录中搜​​索类和资源,然后搜索较低版本,最后是 JAR 根目录

在 Java 9 JDK 上,就好像有一个特定于 JAR 的类路径,其中首先包含版本 9 文件,然后是 JAR 根目录;在 Java 8 JDK 上,此类路径将仅包含 JAR 根。

有关基于 Maven 的示例,请查看 this- maven-jep238


推荐阅读