dan*_*eel 2 java javafx java-11 apple-m1
在过去的几天里,我一直在尝试在我的 M1 Mac 上设置 JavaFX。我能够使用 Java 18 让它工作,但不幸的是我需要在学校使用 Java 11。
我不断收到以下错误:
Graphics Device initialization failed for : es2, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:283)
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:254)
at javafx.graphics/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:264)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:291)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:163)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:659)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:410)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:95)
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.base/java.lang.Thread.run(Thread.java:829)
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: No toolkit found
at javafx.graphics/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:276)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:291)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:163)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:659)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:410)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364)
... 5 more
Run Code Online (Sandbox Code Playgroud)
我尝试过使用以下 JavaFX 版本的各种组合:
javafx-sdk-11
javafx-sdk-11.0.2
javafx-sdk-17.0.2
javafx-sdk-18
以及以下 Java JDK 版本:
temurin-11.jdk
zulu-11.jdk
但我所尝试的一切都没有给我带来任何成功。我知道我已经正确安装了所有东西(更新运行配置等),所以我认为这不应该是一个问题。我尝试过使用 VSCode、Eclipse 和 IntelliJ,但它们的结果都是相同的。
是否有可能在 M1 Mac 上运行带有 Java 11 的 JavaFX 还是我运气不好?提前致谢。
我没有 M1 Mac 来测试,但是您是否尝试过使用 Azul 提供的包含 JavaFX 的 JDK 11 构建?我看到您提到了 zulu-11,只是不确定您是否选择了捆绑 JavaFX 的版本。
\n请务必在各个选项中选择 \xe2\x80\x9cmacOS\xe2\x80\x9d、\xe2\x80\x9cARM 64-bit\xe2\x80\x9d 和 \xe2\x80\x9cJDK FX\xe2\x80\x9d下载页面的弹出菜单。
\nhttps://www.azul.com/downloads/?version=java-11-lts&os=macos&architecture=arm-64-bit&package=jdk-fx
\n我不建议尝试在 M1 Mac 上使用 JavaFX 11。
正如swpalmer 在他的回答中指出的那样,有一个包含 JavaFX 的 Azul JDK FX Java 11 LTS 发行版。
然而,一些早期版本的 JavaFX 是为 M1 mac 编写的,但它们崩溃了,请参阅引用的问题和相关错误报告(JavaFX 错误跟踪器 wiki 中的崩溃有很多):
所有相关修复可能都会向后移植到 Azul JDK FX 11 LTS 版本,但我不会依赖这一点。
在检查11.0.2 版本的 Maven 中的 JavaFX 模块时,没有支持 M1 架构的模块。此外,没有可供从支持 M1 架构的 Gluon 下载的JavaFX 11 模块和 JavaFX 11 SDK 。
相反,我建议使用适用于最新 Mac M1 系统和 Mac 操作系统的已知良好版本,即 JDK 17+ 和 JavaFX 17.0.2+。相应的下载很容易获得:
有关在构建环境中安装和使用这些发行版的信息,请参阅相关文档(openjfx.io、Zulu 或您的 IDE 提供商)。
您可以在较旧的 JDK 上运行 JavaFX 17.0.2+,但我建议使用每个版本的最新版本。
我已经在 Intel Mac 上尝试过此类组合(例如 JDK 11 上的 JavaFX 17.0.2)并且工作正常,但我还没有在 M1 Mac 上尝试过这些组合,因为我没有。
支持 M1 mac(aarch64 架构)的 JavaFX 17.0.2+ 可在我在此答案中链接的资源中找到。
支持 M1 mac(aarch64 架构)的 JDK 11 和 JRE 11 可从各个供应商处获得(请咨询您的 JDK 或 JRE,例如Zulu或Liberica、发行版供应商,以查看您平台上这些发行版的安装说明)。
您注意到您尝试了以下发行版:
javafx-sdk-17.0.2 javafx-sdk-18
它对你不起作用(报告“找不到合适的管道”)。
我没有 M1 mac 来尝试验证这一点。
我不知道最新的 JavaFX 版本不适合您的原因。也许您正在尝试使用 SDK 的 Intel 架构版本(例如 x64),而不是 SDK 的 M1 兼容架构版本(例如 aarch64)。
JavaFX 18 发行说明包括在版本JDK-8278595 中实现的增强功能,在无法使用管道时提供更多信息。我想这对解决这个问题没有帮助;-)
| 归档时间: |
|
| 查看次数: |
9751 次 |
| 最近记录: |