12

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

Loading library api-ms-win-core-console-l1-1-0 from resource failed: java.lang.UnsatisfiedLinkError: C:\Users\admin01\.openjfx\cache\11.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\11.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 版本?或者我怎样才能自己构建它?

4

2 回答 2

9

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 库)
于 2019-04-15T23:29:07.017 回答
4

您可以尝试自己构建它。
可以在此处找到包含说明的文档:
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 Studio\2017\Community"

但是,请注意“构建 OpenJFX”页面(参见上面的链接)将“64 位操作系统”作为 Windows 平台的先决条件,因此目前很可能不正式支持 32 位 OpenJFX 构建...

于 2019-01-18T11:53:43.813 回答