如何让java8代码使用不安全的jdk8和jdk9?
我在我的Java8代码库中使用了sun.misc.Unsafe
。这在Java9中不起作用。如何让java8代码使用不安全的jdk8和jdk9?
我想修复Java9,但使用与Java8相同的代码库。如果我把module-info.java
,它不会工作,因为我的代码库是Java8。
怎么办?
回答:
Andreas comment指向正确的方向,你可以使用Multi-Release JAR Files。
您可以创建一个包装,使得与普通的代码在Java JDK中的类都在根JAR,而一个在您需要覆盖的实现是在都的根罐子以及META-INF/versions/9。正如JEP所述: -
在不支持MRJAR的JDK中,只有根目录中的类和资源将可见。
在支持MRJAR的JDK中,与任何后续Java平台版本相对应的目录都将被忽略;它会首先在与当前正在运行的主要Java平台发行版本对应的Java平台特定目录中搜索类和资源,然后搜索较低版本的那些目录,最后搜索JAR根目录。例如,在Java 9 JDK上,就好像有一个JAR特定的类路径,其中首先包含版本9文件,然后是JAR根;然后,在Java 8 JDK中,此类路径将只包含JAR根。
编辑: - Here是一个JetBrains blog使用IntelliJ2017.3的帮助下创建了一个类似的包装样本项目。
以上是 如何让java8代码使用不安全的jdk8和jdk9? 的全部内容, 来源链接: utcz.com/qa/258797.html