返回

將 Java 模組建置為原生可執行檔

GraalVM Native Image 支援 Java 平台模組系統,該系統是在 Java 9 中引入的,這意味著您可以將模組化的 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
    

與我們聯繫