Java SE 9 引入了所谓的“模块化系统”,这种模块化系统使得应用程序的开发、部署和维护变得更为集中化和易于管理。然而,这也引发了一个问题:当在 Java SE 9 环境下编写应用程序时,如何使它在 Java SE 8 或更早的版本上运行呢?
为了解决这个问题,Java SE 9 新增了多版本兼容 JAR 包的功能,即使你的应用程序在 Java SE 9 环境下编译和打包,它也能在 Java SE 8 或更早的版本中运行。下面我们就来看看如何创建和使用多版本兼容 JAR 包。
创建多版本兼容 JAR 包
首先,你需要在 Java SE 9 的环境下编写代码,然后使用 jdeps
工具生成运行时依赖关系描述文件(.class
文件的元信息)。你可以使用以下命令来生成描述文件:
jdeps --generate-module-info . <your class files>
该命令将生成一个名为 module-info.java
的文件,其中包含模块名称和其依赖项。
然后,你需要使用 javac 编译器将代码编译为 Java SE 9 模块。使用以下命令进行编译:
javac -d <output directory> -modulesourcepath <your source code directory> <your source files>
这将生成一个名为 <module name>.jar
的 JAR 包。此时,该 JAR 包只能在 Java SE 9 环境中运行。
接下来,你需要使用 jlink
工具将该 JAR 包转换为多版本兼容 JAR 包。使用以下命令:
jlink --output <output jar file> --add-modules <module name> --target <target java version>
<output jar file>
是转换后的 JAR 包的文件名,<module name>
是应用程序的模块名称,<target java version>
是目标 Java 环境的版本。例如,如果你想要将 JAR 包转换为 Java SE 8 的版本,可以使用以下命令:
jlink --output myapp-java8.jar --add-modules myapp --target 8
这将生成一个名为 myapp-java8.jar
的 JAR 包,它可以在 Java SE 8 环境下运行。
使用多版本兼容 JAR 包
使用多版本兼容 JAR 包非常简单,你只需要将 JAR 包放到应用程序的类路径中即可。当在 Java SE 9 环境中运行时,应用程序将使用原始的 JAR 包;当在 Java SE 8 或更早的版本中运行时,应用程序将使用转换后的 JAR 包。
以下是两个示例,演示如何在不同的 Java 环境下运行应用程序。
示例 1:在 Java SE 9 环境中运行
假设我们创建了一个名为 myapp
的 Java 应用程序模块,并使用以下命令编译和打包:
javac -d outDir --module-source-path srcDir srcDir/myapp/Main.java
jlink --output myapp.jar --add-modules myapp --launcher myapp=myapp.Main
在 Java SE 9 环境中,我们可以使用以下命令来运行该应用程序:
java -jar myapp.jar
该命令将使用原始的 JAR 包,在 Java SE 9 环境中运行 myapp
模块。
示例 2:在 Java SE 8 环境中运行
假设我们将 myapp.jar
文件放到 Java SE 8 环境下,并使用以下命令来运行该应用程序:
java -jar myapp.jar
由于 myapp.jar
是多版本兼容的 JAR 包,它将自动转换为 Java SE 8 环境下可用的版本。因此,该命令将使用转换后的 JAR 包,在 Java SE 8 环境中运行 myapp
模块。
以上是使用 Java SE 9 多版本兼容 JAR 包的攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java SE 9 多版本兼容 JAR 包示例 - Python技术站