我使用 Java 17 和 JavaFX 16 库制作了一个应用程序。有没有办法使用它的 JPackage 制作可安装的 32 位版本?由于自 Java 9 以来 Java 总是只有 64 位(与 JavaFX 库相同),我怀疑这是不可能的,但有什么办法吗?
1 回答
jpackage
是的,您可以使用(Java 17)制作可安装的 32 位版本的 JavaFX 应用程序。
Azul Zulu为各种平台提供32 位 JDK+JavaFX 17 下载。切换您的应用程序以使用它并使用该 JDK 打包它。这样做时,(我认为)没有必要提供 JavaFX Maven 依赖项,因为 JavaFX 模块已经可以从 Azul JDK+JavaFX 平台分发中获得。
我不会在此处提供有关如何使用 jpackage 的完整步骤,因为这已在其他地方记录和讨论。
根据原始海报的评论,这种方法有效:
Azul JDK 在 windows 中完美运行(我使用的是 windows,我的客户端(拥有 32 位操作系统)也使用 windows)
或者
Maven Central 中的 JavaFX 包可用于各种操作系统和32 位或 64 位平台架构。
您可以使用分类器从特定架构(或架构组合)中选择作为 Maven 中的依赖项,类似于此示例(没有阴影)。
如果您走这条路,则需要确保在进行打包时正确选择了适当的底层 JDK(选择 32 位 JDK 构建而不是 64 位 JDK 构建)。同样,Azure Zulu(可能还有其他 JDK 供应商)提供您可以使用的 32 位 JDK 构建。
如果您的目标设备是 Mac,Mac OS X 不支持 32 位应用程序,因此没有适用于 Mac 的 32 位 Java/JavaFX 构建,只有针对英特尔芯片或新 Apple M1 芯片的 64 位构建。
有二进制 JavaFX 构建的受支持架构示例。这只是基于对 JavaFX Maven 存储库中二进制 jar 可用的分类器扩展的快速浏览。这些评论只是我对这些是什么的猜测,而不是官方文档:
- linux-aarch64(linux arm v8 64 位)。
- linux-arm32(linux arm v7 32 位)。
- Linux(Linux 英特尔 64 位)。
- mac-aarch64(mac M1 64 位)。
- mac(mac 英特尔 64 位)。
- win-x86(win 英特尔 32 位)。
- 赢(赢英特尔 64 位)。
如果没有提供分类器,我认为构建将检查您当前的操作环境并选择最适合的。
此外,对于某些平台,分类器中有带有 -monocle 后缀的构建,也可用于各种操作系统类型的 32 位和 64 位风格。这是针对嵌入式设备或无头设备(无显示器,例如服务器),并提供不使用操作系统提供的窗口系统的 JavaFX 版本(即窗口完全由 JavaFX 管理,而不是 X-windows 窗口管理器和不是 Windows 操作系统窗口管理器)并且可能使用软件渲染而不是硬件渲染。大多数人不需要这个,但如果有兴趣,请参阅(最小的)Monocle 文档。
Gluon 通过Gluon Mobile为各种移动架构提供 JavaFX 支持。我相信它与 jpackage 解决方案不同,而是依赖于使用GraalVM的本机编译(但我可能错了,我没有调查过)。不管它是如何工作的,如果您需要针对移动设备进行 JavaFX 部署,我建议您咨询 Gluon 及其移动开发、打包和部署解决方案。