OpenJFX对32位系统的支持

时间:2019-01-14 10:38:30

标签: java openjfx

我想为Windows x86 arch构建JavaFX应用程序。因此,我已经下载了Adopt OpenJdk 32位版本,并用它来创建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位arch编译的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版本?或者我该如何自己构建它?

2 个答案:

答案 0 :(得分:3)

您可以尝试自己构建它。
包含说明的文档可以在这里找到:
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"

但是,请注意,“ Building OpenJFX”页面(请参见上面的链接)将“ 64位操作系统”作为Windows平台的必备条件,因此,目前极有可能官方不支持32位OpenJFX版本...

答案 1 :(得分:1)

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库)