我看过一些简要提到 Java 9 中自包含应用程序的在线演示,但我有一个问题想弄清楚。
有了新的模块系统,您现在可以只包含运行应用程序所需的最少代码量。但是,希望运行该应用程序的系统是否仍然需要 JRE,或者是否可以将其包含在程序的基本模块中?
我怀疑是后者,因为下载最新版本 Java 的页面 ( here ) 仍然显示版本 8_151。
TL;DR - 使用 Java 9,是否可以创建一个独立的可执行文件,可以在没有安装 JRE/Java 的系统上执行?
最佳答案
j链接
是的,这是可能的with jlink
( JEP 282 ),但是您的所有代码和您的依赖项都需要是模块化 JAR(即具有 module-info.class
的)。它是这样工作的:
jlink
--module-path $JAVA_HOME/jmods:mods
--add-modules your.app
--launcher launch-app=your.app
--output your-app-image
详细说明:
--module-path
列出包含模块的文件夹 - 这需要包括您要使用的 JDK 附带的平台模块(在$JAVA_HOME/jmods
) 和您的应用程序模块 (mods
)--add-modules
命名您希望运行时镜像包含的模块 - 它的所有(它们的)传递依赖项都包含在内--launcher
是可选的,但非常方便;它使用给定的名称 (launch-app
) 创建一个操作系统特定的启动器(例如 Windows 上的.bat
),启动指定的模块(your.app
;在这种情况下,假设主类是为它定义的)--output
指定创建运行时镜像的位置
关于java - 独立的应用程序,用 Java 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46860679/