• java9新特性-6-多版本兼容jar包


    1.官方Feature

    238: Multi-Release JAR Files

     


    2.使用说明

    当一个新版本的Java出现的时候,你的库用户要花费数年时间才会切换到这个新的版本。这就意味着库得去向后兼容你想要支持的最老的Java版本(许多情况下就是Java 6 或者 Java7)。这实际上意味着未来的很长一段时间,你都不能在库中运用Java 9所提供的新特性。幸运的是,多版本兼容jar功能能让你创建仅在特定版本的Java环境中运行库程序选择使用的class版本。

    举例1:

    jar root

      - A.class

      - B.class

      - C.class

      - D.class

      - META-INF

         - versions

            - 9

               - A.class

               - B.class

    说明:

    在上述场景中,root.jar 可以在 Java 9 中使用,不过A或B类使用的不是顶层的root.A或root.B 这两个class,而是处在“META-INF/versions/9”下面的这两个。这是特别为 Java9 准备的 class 版本,可以运用 Java 9 所提供的特性和库。同时,在早期的 Java 诸版本中使用这个JAR 也是能运行的,因为较老版本的 Java只会看到顶层的A类或 B 类。

    举例2:

    jar root

      - A.class

      - B.class

      - C.class

      - D.class

      - META-INF

         - versions

            - 9

               -  A.class

               - B.class

            - 10

               -

      A.class

    官方说明:

    By this scheme, it is possiblefor versions of a class designed for a later Java platform release to overridethe version of that same class designed for an earlier Java platform release.


    3.使用举例

    步骤一:提供必要的类

    在指定目录(E: each1_Java9multijarsrcmainjavacomatguigu)下提供如下的类:

    【Generator.java】

     
     

    【Application.java】

     
     

    在如下目录(E: each1_Java9multijarsrcmainjava-9comatguigu)下提供同名的类:

    【Generator.java】

     
     

    步骤二:打包

    指令如下:

    javac -d build --release 8  src/main/java/com/atguigu/*.java

    javac -d build9 --release 9  src/main/java-9/com/atguigu/*.java

    jar --create --main-class=Application --file  multijar.jar -C build . --release 9 -C build9 .

    步骤三:在java 9 及之前版本的环境下进行测试即可



    作者:尚硅谷面试官宋红康
    链接:https://www.jianshu.com/p/972c7d531094
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    简直不敢相信...
    halcon 保存Region [原创]
    VS2015 下载链接
    C#【数据转换】十进制yte[]相互转换
    C# 复制窗体问题完美解决办法
    TextBox 保持固定长度,添加新行滚动到最后,跨线程。
    mysql isnull
    C#跨线程访问控件[我的记录]
    C# 常用类-IO-ClassExcelExport
    C# 常用类-IO-ClassXML
  • 原文地址:https://www.cnblogs.com/wzlbigdata/p/8278379.html
Copyright © 2020-2023  润新知