java - 是否可以在 M1 Mac 上使用 Java 11 运行 JavaFX?

标签 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

我尝试使用以下 JavaFX 版本的各种组合:

javafx-sdk-11

javafx-sdk-11.0.2

javafx-sdk-17.0.2

javafx-sdk-18

以及以下 Java JDK 版本:

铁木林-11.jdk

zulu-11.jdk

但我尝试过的任何事情都没有给我带来任何成功。我知道我已经正确安装了所有东西(更新运行配置等),所以我认为这不是问题。我尝试过使用 VSCode、Eclipse 和 IntelliJ,但它们的结果都是一样的。

甚至可以在 M1 Mac 上使用 Java 11 运行 JavaFX 还是我运气不好?提前致谢。

最佳答案

我没有要测试的 M1 Mac,但您是否尝试过 Azul 提供的包含 JavaFX 的 JDK 11 构建?我看到你提到了 zulu-11,只是不确定你是否选择了捆绑了 JavaFX 的版本。

请务必在下载页面的各种弹出菜单中选择“macOS”、“ARM 64-bit”和“JDK FX”。

https://www.azul.com/downloads/?version=java-11-lts&os=macos&architecture=arm-64-bit&package=jdk-fx

关于java - 是否可以在 M1 Mac 上使用 Java 11 运行 JavaFX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71622429/

相关文章:

javafx - 如何在 SceneBuilder 中更改 TabPane 的标题颜色?

java - 使用JAVAFX和SceneBuilder制裁剪体线的动态动画

java - 无法从集群内部连接到 kubernetes API

java - Java HTTP Client 是否处理压缩

java - Android ListView 使用 baseAdapter 返回 null onItemClick

java - java中使用正则表达式进行字符串验证

java - 静态最终字段的同步 getter

java - 如何将java文件编译为使用其他.class的.class。 (如果它是可能的)

java - 是否可以通过查找来控制非颜色字段的值?

java - 我应该在单 CPU 系统上使用串行 GC 还是 G1GC?