◀返回
将 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!。有关其他安装选项,请访问 下载部分。
- 下载或克隆演示存储库,并导航到目录 native-hello-module/
git clone https://github.com/graalvm/graalvm-demos
cd graalvm-demos/native-hello-module
- 使用 Maven 编译和打包项目
mvn 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 模块的资源 的更多信息。