返回

将 Java 模块构建为本地可执行文件

GraalVM Native Image 支持 Java 9 中引入的 Java 平台模块系统,这意味着您可以将模块化 Java 应用程序转换为本地可执行文件。

native-image 工具接受模块相关的参数,例如 --module (-m)、--module-path (-p)、--add-opens--add-exports(与 java 启动器相同)。当使用这种模块相关参数时,native-image 工具本身也会被用作模块。

除了支持 --add-reads--add-modules 之外,所有模块相关选项都会在扫描模块路径之前被考虑。这有助于防止类加载错误,并允许在运行时进行更好的模块内省。

从 Java 模块构建本地可执行文件的命令是

native-image [options] --module <module>[/<mainclass>] [options]

运行演示

按照以下步骤将模块化 Java 应用程序构建为本地可执行文件。对于演示,您将使用一个简单的 HelloWorld Java 模块,它通过 Maven 收集。

├── hello
│   └── Main.java
│       > package hello;
│       > 
│       > public class Main {
│       >     public static void main(String[] args) {
│       >         System.out.println("Hello from Java Module: "
│       >             + Main.class.getModule().getName());
│       >     }
│       > }
│
└── module-info.java
    > module HelloModule {
    >     exports hello;
    > }

先决条件

确保您已安装 GraalVM JDK。最简单的入门方法是使用 SDKMAN!。有关其他安装选项,请访问 下载部分

  1. 下载或克隆演示存储库,并导航到目录 native-hello-module/
     git clone https://github.com/graalvm/graalvm-demos
    
     cd graalvm-demos/native-hello-module
    
  2. 使用 Maven 编译和打包项目
     mvn package
    
  3. 测试在 GraalVM JDK 上运行它
     java --module-path target/HelloModule-1.0-SNAPSHOT.jar --module HelloModule
    
  4. 现在将此模块构建为本地可执行文件
     native-image --module-path target/HelloModule-1.0-SNAPSHOT.jar --module HelloModule
    

    它将模块化 Java 应用程序构建为名为 hellomodule 的本地可执行文件,该文件位于您可以运行的项目根目录中

     ./hellomodule
    

与我们联系