我可以使用 jpackage 制作我的应用程序的可安装 32 位版本吗 (Java 17)
Can I make an installable 32-bit version of my app using jpackage (Java 17)
我已经使用 Java 17 和 JavaFX 16 库制作了一个应用程序。有没有办法使用它的 JPackage 制作可安装的 32 位版本?由于 Java 自 Java 9 以来总是以 64 位出现(与 JavaFX 库相同),我怀疑这是不可能的,但有什么办法可以做到吗?
是的,您可以使用 jpackage
(Java 17)制作可安装的 JavaFX 应用程序的 32 位版本。
Azul Zulu 为各种平台提供 32 bit JDK+JavaFX 17 downloads。切换您的应用程序以使用它并使用它打包它 JDK。这样做时,(我认为)不需要提供 JavaFX Maven 依赖项,因为 JavaFX 模块已经可以从 Azul JDK+Java外汇平台分布。
我不会在此处提供有关如何使用 jpackage 的完整步骤,因为在其他地方已记录和讨论过。
根据楼主的评论,这个方法有效:
Azul JDK worked perfectly in windows (I'm using windows, and my client (who has 32 bit OS) also uses windows)
或
JavaFX packages in Maven central are available for various OS and 32-bit or 64-bit 平台架构。
您可以 select 来自特定架构(或架构组合)作为 Maven 中使用分类器的依赖项,similar to this example (without the shading)。
如果你走那条路,你需要确保在打包时正确选择了合适的底层 JDK(选择 32 位 JDK 构建而不是 64 位JDK 构建)。同样,Azure Zulu(可能还有其他 JDK 供应商)提供您可以使用的 32 位 JDK 版本。
如果 Mac 是您的目标设备,Mac OS X does not support 32-bit apps,因此 Mac 没有 32 位 Java/JavaFX 构建,只有针对任一 Intel 芯片的 64 位构建或新的 Apple M1 芯片。
有二进制 JavaFX 构建的受支持架构示例。这是基于对 JavaFX Maven 存储库中可用于二进制 jar 的分类器扩展的快速浏览。评论只是我对这些是什么的猜测,不是官方文档:
- linux-aarch64 (linux arm v8 64 bit).
- linux-arm32(linux arm v7 32 位)。
- linux(linux 英特尔 64 位)。
- mac-aarch64(mac M1 64 位)。
- mac(mac 英特尔 64 位)。
- win-x86(赢得英特尔 32 位)。
- win(赢得英特尔 64 位)。
如果没有提供分类器,我认为构建将检查您当前的操作环境并选择最适合的。
此外,对于某些平台,分类器中有带有 -monocle 后缀的构建,也有针对各种 OS 类型的 32 位和 64 位版本。这是针对嵌入式设备或无头设备(无显示器,例如服务器)并提供不使用 OS 提供的 windowing 系统的 JavaFX 版本(即 windows 完全由 JavaFX 管理,不是 X-windows window 经理,也不是 Windows OS window 经理) 可以使用软件渲染而不是硬件渲染。大多数人不需要这个,但如果有兴趣,请参阅(最小)Monocle documentation.
Gluon 通过 Gluon Mobile. I believe it is different from a jpackage solution and instead relies on native compilation using GraalVM 为各种移动架构提供 JavaFX 支持(但我可能是错的,我没有调查过)。不管它是如何工作的,如果您需要针对移动设备进行 JavaFX 部署,我建议您咨询 Gluon 及其移动开发、打包和部署解决方案。
我已经使用 Java 17 和 JavaFX 16 库制作了一个应用程序。有没有办法使用它的 JPackage 制作可安装的 32 位版本?由于 Java 自 Java 9 以来总是以 64 位出现(与 JavaFX 库相同),我怀疑这是不可能的,但有什么办法可以做到吗?
是的,您可以使用 jpackage
(Java 17)制作可安装的 JavaFX 应用程序的 32 位版本。
Azul Zulu 为各种平台提供 32 bit JDK+JavaFX 17 downloads。切换您的应用程序以使用它并使用它打包它 JDK。这样做时,(我认为)不需要提供 JavaFX Maven 依赖项,因为 JavaFX 模块已经可以从 Azul JDK+Java外汇平台分布。
我不会在此处提供有关如何使用 jpackage 的完整步骤,因为在其他地方已记录和讨论过。
根据楼主的评论,这个方法有效:
Azul JDK worked perfectly in windows (I'm using windows, and my client (who has 32 bit OS) also uses windows)
或
JavaFX packages in Maven central are available for various OS and 32-bit or 64-bit 平台架构。
您可以 select 来自特定架构(或架构组合)作为 Maven 中使用分类器的依赖项,similar to this example (without the shading)。
如果你走那条路,你需要确保在打包时正确选择了合适的底层 JDK(选择 32 位 JDK 构建而不是 64 位JDK 构建)。同样,Azure Zulu(可能还有其他 JDK 供应商)提供您可以使用的 32 位 JDK 版本。
如果 Mac 是您的目标设备,Mac OS X does not support 32-bit apps,因此 Mac 没有 32 位 Java/JavaFX 构建,只有针对任一 Intel 芯片的 64 位构建或新的 Apple M1 芯片。
有二进制 JavaFX 构建的受支持架构示例。这是基于对 JavaFX Maven 存储库中可用于二进制 jar 的分类器扩展的快速浏览。评论只是我对这些是什么的猜测,不是官方文档:
- linux-aarch64 (linux arm v8 64 bit).
- linux-arm32(linux arm v7 32 位)。
- linux(linux 英特尔 64 位)。
- mac-aarch64(mac M1 64 位)。
- mac(mac 英特尔 64 位)。
- win-x86(赢得英特尔 32 位)。
- win(赢得英特尔 64 位)。
如果没有提供分类器,我认为构建将检查您当前的操作环境并选择最适合的。
此外,对于某些平台,分类器中有带有 -monocle 后缀的构建,也有针对各种 OS 类型的 32 位和 64 位版本。这是针对嵌入式设备或无头设备(无显示器,例如服务器)并提供不使用 OS 提供的 windowing 系统的 JavaFX 版本(即 windows 完全由 JavaFX 管理,不是 X-windows window 经理,也不是 Windows OS window 经理) 可以使用软件渲染而不是硬件渲染。大多数人不需要这个,但如果有兴趣,请参阅(最小)Monocle documentation.
Gluon 通过 Gluon Mobile. I believe it is different from a jpackage solution and instead relies on native compilation using GraalVM 为各种移动架构提供 JavaFX 支持(但我可能是错的,我没有调查过)。不管它是如何工作的,如果您需要针对移动设备进行 JavaFX 部署,我建议您咨询 Gluon 及其移动开发、打包和部署解决方案。