编译运行
在 Windows 下 使用 powershell 进行编译
- 设置环境变量
$env:PATH="D:\programs\Jdk\jdk-17.0.13\bin;$env:PATH"
$env:JAVAFX_SDK="D:\programs\JavaFX\javafx-sdk-17.0.13\lib"
- 验证环境
echo $env:PATH echo $env:JAVAFX_SDK javac --version
- 编译
Get-ChildItem -Path.\src -Filter "*.java" -Recurse
& javac -encoding UTF-8 --module-path $env:JAVAFX_SDK -d mods\com.codemes.javafx (Get-ChildItem -Path.\src -Filter "*.java" -Recurse).FullName
--module-path:指定 JavaFX 的模块路径,这里是指定 SDK 的路径
–d 指定输出目录
Get-ChildItem -Path.\src -Filter "*.java" -Recurse 递归获取 src 目录下的所有 java 文件
-encoding UTF-8 指定文件编码为 UTF-8
- run
& java --module-path "$env:JAVAFX_SDK;mods" -m com.codemes.javafx/com.codemes.javafx.HelloJavaFx
使用 jlink 打包运行
对于模块化项目,jlink 可用于使用 JavaFX jmods 创建自定义运行时映像,也就是说通过 jlink 可以定制化创建一个可以在任何平台上运行的镜像文件。命令如下:
- 查看 jlink 版本
jlink --version
- 设置 jmod 环境变量
$env:JAVAFX_JMOD="D:\programs\JavaFX\javafx-jmods-17.0.13"
- 打包
jlink --module-path "$env:JAVAFX_JMOD;mods" --add-modules com.codemes.javafx --output hellofx
--module-path:指定 JavaFX 的模块路径,这里是指定 JMOD 的路径
--add-modules:将我们开发的模块加入进来
--output:指定输出目录
运行完上面的代码会在项目目录中生成一个 hellofx 文件夹,里面生成了若干文件夹和文件,在 bin 里面可以看到有 java 的可执行文件和库文件等
- 运行
./hellofx/bin/java -m com.codemes.javafx/com.codemes.javafx.HelloJavaFx
可以看到这次运行时没有依赖我们本机的任何环境依赖,因为已经通过 jlink 生成了一个定制化的可运行镜像,但注意,这个定制的 jre 是特定于平台的。比如我是用 windows 系统生成的,在 ubuntu 上是不能运行的。
使用 jpackage 打包运行
jpackage 可以将程序打包为适用于与指定平台的可运行程序,例如 mac 系统下的 app-image、dmg 等,也可以打包为适合 windows 系统等 exe 或者 mis。我这里使用的命令是:
- 查看 jpackage 版本
jpackage --version
- 查看 JMOD 环境变量
echo $env:JAVAFX_JMOD
- 打包
这里需要注意,打包之前需要先进行编译,编译到 mods 目录下。
jpackage --type exe -n helloJavaFx -p “$env:JAVAFX_JMOD;mods” -m com.codemes.javafx/com.codemes.javafx.HelloJavaFx
执行上面的命令,可能会出现下面的错误,需要安装 WiX 工具,安装 wix 工具需要先安装 dotnet 环境
[22:45:27.337] 找不到 WiX 工具 (light.exe, candle.exe) [22:45:27.337] 从 https://wixtoolset.org 下载 WiX 3.0 或更高版本,然后将其添加到 PATH。 错误:类型 [exe] 无效或不受支持
- 安装 wix
dotnet.exe tool install --global wix
安装完成后,可能需要重新启动命令行,重新启动后,要注意重新设置 Javafx jmod 的环境变量
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于