java - 独立的应用程序,用 Java 构建

标签 java java-9 self-contained java-module

我看过一些简要提到 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/

相关文章:

java - Java工厂设计模式或工厂类讲解

java - 如何使用python提取Android APK包version_name?

java - 编译时如何告诉eclipse添加导出

asp.net - 独立的 ASP.Net Core 应用程序无法在 Mac 上运行

c# - 是否可以部署自包含的 .NET Framework 应用程序?

java - 为 OS/X 和 Unix 打包 Java CLI 应用程序的最佳选择?

java - 速度:#if、#else 和 #end 之前或之后的空格?

Java 9 : module not found: primefaces

java - Java 9 中 'uses' 指令的用途是什么?

c - 独立的 C 共享库