如何在jdk8和jdk9上使用使用Unsafe的java8代码?

igr:

sun.misc.Unsafe在Java8代码库中使用。这在Java9上不起作用。

我想拥有针对Java9的修复程序,但具有与Java8上运行的相同的代码库。如果放了module-info.java,它将不起作用,因为我的代码库是Java8。

该怎么办?

纳曼:

Andreas注释指向正确的方向,您可以使用Multi-Release JAR Files

您可以创建一个包装,使得与代码中的常见的类在Java的JDK是在根JAR,而一个在您需要覆盖实现在这两个根罐子以及META-INF /版本/ 9正如JEP所述:

  • 在不支持MRJAR的JDK中,只有根目录中的类和资源才可见。

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

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

编辑:-是在 JetBrains博客的帮助下使用IntelliJ2017.3。创建的类似包装的示例项目

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章