我尝试在我的 Mac 上的 Eclipse 中安装 JavaFX,但我一直遇到“Quantum Renderer”错误。
我在 Windows 计算机上有两个成功的 JavaFX 设置,并且 VM 参数和构建路径与我的设置相同。我知道如果您下载了错误的架构 SDK,则会出现该错误。我已经下载了aarch64架构,这是我的M2 MacBook的架构。我不知道我哪里出错了。我在下面发布了一些内容来帮助您。
我的虚拟机参数:
--module-path /Users/sohammukherjee/Downloads/javafx-sdk-22.0.1/lib/ --add-modules=javafx.controls
错误:
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 [email protected]/com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:283)
at [email protected]/com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:253)
at [email protected]/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:263)
at [email protected]/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:290)
at [email protected]/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:162)
at [email protected]/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:651)
at [email protected]/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:409)
at [email protected]/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:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1085)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at [email protected]/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:95)
at [email protected]/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.base/java.lang.Thread.run(Thread.java:840)
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:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1085)
Caused by: java.lang.RuntimeException: No toolkit found
at [email protected]/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:275)
at [email protected]/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:290)
at [email protected]/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:162)
at [email protected]/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:651)
at [email protected]/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:409)
at [email protected]/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364)
... 5 more
请帮帮我。
No toolkit found
表示某些原生组件无法加载。
配置您的IDE
看你的截图,你的javafx.graphics.jar的路径是错误的,它指向
lit
目录,而不是lib
目录。 (我不知道这是不是你唯一的问题)。
另一件事要检查(如果愿意,您可以在问题中截屏)是 运行配置 的外观(链接的屏幕截图来自 Eclipse IDE 中非模块化 JavaFX 应用程序的 openjfx 文档)。
将 JavaFX SDK 移至模块路径后,. 。 。现在我有错误“找不到模块 javafx.controls”。
如果找不到 javafx 模块,那么你的模块路径是错误的。
替代方案:使用 Maven 或 Gradle,与您的 IDE 集成
如果您仍然遇到问题,还有其他方法来开发 JavaFX,如 openjfx.io 入门说明中所述。您可以使用 Eclipse 与模块化 Maven 应用程序集成。 Maven 或 Gradle 从 Maven Central 构建源 JavaFX 模块。与 SDK 中的 JavaFX 代码不同,这些代码被打包为在 JavaFX jar 内包含目标架构所需的所有本机代码(在运行时将本机组件动态提取到本地缓存)。
老实说,从长远来看,IMO,最好使用像 Maven 或 Gradle 这样的构建工具,所有主要 IDE 都将与其集成,而不是尝试手动配置 IDE 环境。
替代方案:使用包含 JavaFX 的 JDK/JRE
您可以为您的环境(M 系列 Mac)使用已包含 JavaFX 的 JDK - 这样您就不需要配置模块路径、将模块添加到模块图中,或者根本不需要使用 JavaFX SDK。
正如巴兹尔评论中所指出的,您可以:
使用与 JavaFX/OpenJFX 库捆绑在一起的 JDK/JRE。至少有两家供应商提供它们:两家供应商还提供Azul Systems 和 BellSoft。
不包含 JavaFX 的 JDK 和 JRE。如果您采用这种方法,请确保选择正确的 JDK/JRE 版本,该版本既包含 JavaFX,又是为您的架构构建的(在您的情况下是 Mac M 系列 aarch64 处理器,仅使用最新的 LTS 或非 LTS 版本,因为它最符合您的要求.