OpenJFX 对 32 位系统的支持

OpenJFX support for 32-bit systems

我想为 Windows x86 架构构建我的 JavaFX 应用程序。所以我下载了 Adopt OpenJdk 32 位版本并用它来创建 Java 运行时映像。当我尝试 运行 应用程序时,出现以下错误:

Loading library api-ms-win-core-console-l1-1-0 from resource failed: java.lang.UnsatisfiedLinkError: C:\Users\admin01\.openjfx\cache.0.1\api-ms-win-core-console-l1-1-0.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform
java.lang.UnsatisfiedLinkError: C:\Users\admin01\.openjfx\cache.0.1\api-ms-win-core-console-l1-1-0.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform
        at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)

发生此错误是因为 openjfx:javafx-graphics 工件依赖于平台并且它包含为 64 位架构编译的 DLL。

$ file api-ms-win-core-console-l1-1-0.dll
api-ms-win-core-console-l1-1-0.dll: PE32+ executable (DLL) (console) x86-64, for MS Windows

Maven Central 中没有 32 位 OpenJFX 版本。

是否可以在某处获得 x86 版本?或者如何自己搭建?

您可以尝试自己构建它。
可在此处找到包括说明在内的文档:
https://wiki.openjdk.java.net/display/OpenJFX/Building+OpenJFX

这些说明并没有完美运行(至少对我而言)。
我必须安装 DirectX SDK(从 2010 年 6 月开始)并且我必须设置更多环境变量(WINSDK_DIR 和 DXSDK_DIR)。
还可以在此处找到有关一般构建过程的其他信息:
https://github.com/SkyLandTW/OpenJFX-binary-windows)

对于我的设置,我还必须传递一些 gradle 属性,所以我的调用如下所示:
gradle clean sdk --no-daemon -PWINDOWS_SDK_VERSION=10.0.17763.0 -PWINDOWS_VS_VSINSTALLDIR="C:\Program Files (x86)\Microsoft Visual Studio17\Community"

但是,请注意 "Building OpenJFX" 页面(参见上面的 link)将“64 位 OS” 统计为 windows 平台先决条件,因此 32 位OpenJFX 构建现在很可能不受官方支持...

Liberica OpenJDK 12 可用于 32 位 Windows 并包括 OpenJFX。据我所知,它是唯一公开可用的 JDK,包括 32 位 openjfx 参考。 https://bell-sw.com/pages/java-12

截至目前(2019 年 4 月 16 日):

  • Zulu OpenJDK 32 位不公开可用 windows 而且从未收到任何关于 32 位请求的回复
  • Amazon Corretto 仅适用于 Java 8 加不完整 Javafx(缺少 webkit 库)