jlink jak
时间: 2025-06-18 16:55:50 浏览: 17
### 使用 jlink 和 jpackage 创建自定义 JDK 的方法及配置
#### 自定义 JDK 镜像的创建
`jlink` 是一个用于创建自定义运行时镜像的工具,可以显著减少应用程序的大小和启动时间。通过指定所需的模块,`jlink` 可以生成仅包含必要组件的 JDK 镜像[^1]。
以下是创建自定义 JDK 镜像的命令示例:
```bash
jlink --add-modules java.base,java.desktop,java.instrument,java.management.rmi,java.naming,java.prefs,java.scripting,java.security.jgss,java.sql,jdk.httpserver,jdk.jfr,jdk.unsupported \
--output custom-jre
```
此命令将生成一个名为 `custom-jre` 的目录,其中包含所有指定模块的自定义 JDK 镜像。这些模块列表可以通过 `jdeps` 命令分析应用程序依赖关系后得出[^1]。
#### 使用 jpackage 打包应用程序
`jpackage` 是一个用于打包 Java 应用程序的工具,支持生成可执行文件或安装程序。它可以通过 `--runtime-image` 参数使用由 `jlink` 创建的自定义 JDK 镜像[^2]。
以下是一个完整的 `jpackage` 命令示例,展示如何结合自定义 JDK 镜像打包应用程序:
```bash
jpackage --name MyApp \
--input target/ \
--main-jar myapp.jar \
--main-class com.example.Main \
--type exe \
--java-options "-Xmx512m" \
--runtime-image custom-jre \
--win-shortcut \
--app-version 1.0.0 \
--icon path/to/icon.ico \
--module-path $PATH_TO_FX/lib \
--add-modules javafx.controls,javafx.graphics \
--verbose
```
- `--name`: 指定生成的应用程序名称。
- `--input`: 指定包含应用程序资源的目录。
- `--main-jar`: 指定主 JAR 文件。
- `--main-class`: 指定主类的全限定名。
- `--type`: 指定生成的目标类型(如 `exe` 表示 Windows 可执行文件)。
- `--java-options`: 传递给 JVM 的选项。
- `--runtime-image`: 指定由 `jlink` 创建的自定义 JDK 镜像目录。
- `--win-shortcut`: 在 Windows 平台上创建桌面快捷方式[^2]。
- `--app-version`: 指定应用程序的版本号。
- `--icon`: 指定应用程序的图标文件。
- `--module-path`: 指定模块路径(对于模块化应用程序)。
- `--add-modules`: 指定需要添加的模块。
- `--verbose`: 启用详细模式以输出更多调试信息。
#### 注意事项
- 确保 `jlink` 创建的自定义 JDK 镜像包含所有应用程序所需的模块。如果缺少必要的模块,可能会导致运行时错误。
- 如果应用程序依赖于外部库或资源文件,请确保它们已正确放置在 `--input` 参数指定的目录中[^2]。
- 对于非模块化项目,可能需要通过 `--class-path` 参数显式指定类路径。
#### 示例代码
以下是一个完整的流程示例,展示如何使用 `jlink` 和 `jpackage` 创建自定义 JDK 并打包应用程序:
1. **创建自定义 JDK 镜像**:
```bash
jlink --add-modules java.base,java.desktop,java.instrument,java.management.rmi,java.naming,java.prefs,java.scripting,java.security.jgss,java.sql,jdk.httpserver,jdk.jfr,jdk.unsupported \
--output custom-jre
```
2. **打包应用程序**:
```bash
jpackage --name MyApp \
--input target/ \
--main-jar myapp.jar \
--main-class com.example.Main \
--type exe \
--java-options "-Xmx512m" \
--runtime-image custom-jre \
--win-shortcut \
--app-version 1.0.0 \
--icon path/to/icon.ico \
--module-path $PATH_TO_FX/lib \
--add-modules javafx.controls,javafx.graphics \
--verbose
```
####
阅读全文
相关推荐















