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 库)
我想为 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 库)