其他分享
首页 > 其他分享> > Java SE 9 多版本兼容 JAR 包示例

Java SE 9 多版本兼容 JAR 包示例

作者:互联网

说明

Java 9 版本中增强了Jar 包多版本字节码文件格式支持,也就是说在同一个 Jar 包中我们可以包含多个 Java 版本的 class 文件,这样就能做到 Jar 包升级到新的 Java 版本时不用强迫使用方为了使用新 Jar 包而升级自己的业务模块 Java 版本,也不用针对不同最低支持 Java 版本提供不同的 Jar,真正的做到了一个 Jar 包兼容所有的目的。

本文通过以下示例来说明多版本 Jar 包的使用。

环境准备

机器上应该有多个版本的 JDK 用于测试,并且至少有一个是 JDK 9 或者更高版本。

命令行编译示例

注:本示例无需使用 IDE ,我们用最原始的方式创建一个多版本的 Jar 包。

新建一个文件夹,用项目名称命名,并且在其中把src目录,包名都建好,可以自定义,后续编译命令自行调整即可。

src\main\java\git\snippet目录下存的是旧版本 JDK 编写的代码。在这个目录下新建两个类。

package git.snippet;

/**
 * Java SE 9 Multi-Release JAR Files示例
 *
 * @author <a href="mailto:410486047@qq.com">Grey</a>
 * @date 2022/8/14
 * @since 9
 */
public class App {
    public static void main(String[] args)   {
        Helper.hello(args[0]);
    }
}
package git.snippet;

/**
 * @author <a href="mailto:410486047@qq.com">Grey</a>
 * @date 2022/8/14
 * @since 1.7
 */
public class Helper {
    public static void hello(String name)   {
        // jdk 9+不能用_作为变量
        String _ = "hello";
        System.out.println(_ + ", " + name);
    }
}

src\main\java9\git\snippet目录下存的是新版本 JDK 编写的代码。我们需要把Helper类用新的 JDK 版本特性来实现。代码如下

package git.snippet;

/**
 * @author <a href="mailto:410486047@qq.com">Grey</a>
 * @date 2022/8/14
 * @since 9
 */
public class Helper {
    public static void hello(String name)   {
        // 旧版本用_作为变量,jdk9不能用_作为变量
        String fixName = "hello";
        System.out.println(fixName + ", " + name + " from jdk9");
    }
}

创建好上述类以后,项目结构如下

接下来是编译,在项目目录下,用 JDK 9+的javac执行如下两个编译命令

标签:Java SE,java,环境,厕所,高版本,文件夹,目录,JDK
来源: