◀返回
将 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 应用程序构建为原生可执行文件。在此演示中,您将使用一个通过 Maven 收集的简单 HelloWorld Java 模块
├── 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!。有关其他安装选项,请访问下载部分。
- 下载或克隆演示仓库并导航到目录 native-image/build-java-modules/
git clone https://github.com/graalvm/graalvm-demos
cd graalvm-demos/native-image/build-java-modules
- 使用 Maven 编译并打包项目
mvn clean package
- 在 GraalVM JDK 上测试运行它
java --module-path target/HelloModule-1.0-SNAPSHOT.jar --module HelloModule
- 现在将此模块构建为原生可执行文件
native-image --module-path target/HelloModule-1.0-SNAPSHOT.jar --module HelloModule
它会将模块化的 Java 应用程序构建为一个名为 hellomodule 的原生可执行文件,该文件位于项目根目录中,您可以运行它。
./hellomodule
相关文档
- 了解更多如何在运行时访问 Java 模块的资源。