zoukankan      html  css  js  c++  java
  • 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
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    ES5特性Object.seal
    自定义右键菜单中bug记录
    ie9及以下不兼容event.target.dataset对象
    创建一个新数组并指定数组的长度
    vue组件的配置属性
    前端模板引擎和网络协议分类
    Python查询Mysql时返回字典结构的代码
    Python实现计算圆周率π的值到任意位的方法示例
    Python实现计算圆周率π的值到任意位的方法示例
    Python实现的计算马氏距离算法示例
  • 原文地址:https://www.cnblogs.com/wzlbigdata/p/8278379.html
Copyright © 2011-2022 走看看