java - 如果目标级别为 8,我可以使用 module-info.java 吗?
问题描述
我知道 jdk9+ 可以识别 module-info.java
但是我想知道 module-info.java 是否仍然可以与目标级别 8 结合使用。
例如,我希望我的库用于 java9+ 项目,它会将其识别为导出特定包的模块,但也可以在 java8 项目中作为普通 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。
推荐阅读
- javascript - 按键按对象数组分组的循环
- javascript - Array.find 仅适用于比较器中的常量值 - 打字稿
- javascript - 如何更改 chrome 扩展中的活动标签 URL
- r - 从宽到长的数据框,具有多个变量和 ids R
- sql - 返回 Toad 中的最新行
- laravel - 图像干预 图像源不可读 Laravel
- excel - application.IsTrusted 返回 false
- aws-elastictranscoder - 是否可以拍摄 2 个单独的视频并将它们并排放在 AWS 弹性转码器中
- java - 为什么 FileReader 流从文本文件中读取 237、187、191?
- swagger - Swagger Swashbuckle 4.0 版本在 swagger 页面顶部引入了一个新的大白条