运行 JavaFX 项目时,我的 M1 MacBook 上出现“图形设备初始化失败:es2, sw”错误

Emr*_*ğur 5 javafx runtime-error java-11 apple-m1

我正在使用适用于 Arm 的 Zulu openJdk 11。我已经在 IntelliJ 和 VsCode 中尝试过对接,但都出现了相同的错误。(我使用的是 JavaFx SDK 11.0.2) 错误消息(来自 Visual Studio 代码的屏幕截图)

我真的很感谢任何帮助,我已经尝试解决这个问题好几天了,但找不到任何信息,特别是 Apple Silicon。

提前致谢。

图形设备初始化失败:es2、sw 初始化 QuantumRenderer 时出错:未找到合适的管道 java.lang.RuntimeException:java.lang.RuntimeException:初始化 QuantumRenderer 时出错:在 javafx.graphics/com.sun.javafx.tk 处未找到合适的管道。 Quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280) 位于 javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:222) 位于 javafx.graphics/com.sun.javafx.tk。 Toolkit.getToolkit(Toolkit.java:260) 在 javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267) 在 javafx.graphics/com.sun.javafx.application.PlatformImpl.startup( PlatformImpl.java:158) 在 javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658) 在 javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java: 409)在javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)在java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在java.base/jdk。内部.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.base/java.lang.reflect.Method.invoke( Method.java:566) 在 java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051) 引起:java.lang.RuntimeException:初始化 QuantumRenderer 时出错:在 javafx.graphics/com 上找不到合适的管道.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94) 在 javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124) 在 java .base/java.lang.Thread.run(Thread.java:834) java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 线程“主”java.lang.reflect.InvoiceTargetException 中的异常.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect .Method.invoke(Method.java:566) 在 java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051) 引起:java.lang.RuntimeException:在 javafx.graphics/com 找不到工具包.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:272) 位于 javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267) 位于 javafx.graphics/com.sun.javafx .application.PlatformImpl.startup(PlatformImpl.java:158)位于javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)位于javafx.graphics/com.sun.javafx.application.LauncherImpl .launchApplicationWithArgs(LauncherImpl.java:409) 在 javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363) ... 5 更多

项目代码(从oracle复制它只是为了测试mu设置):

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
 
public class JavaFX extends Application {
    public static void main(String[] args) {
        launch(args);
    }
    
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World!");
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {
 
            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello World!");
            }
        });
        
        StackPane root = new StackPane();
        root.getChildren().add(btn);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 4

我已经更新了系统并更改了以前的 fx jar,然后收到与您类似的警告。(Big Sur 11.4)\n解决方案如下:

\n
    \n
  1. 访问https://gluonhq.com/products/javafx/并再次下载 JDK。\n然后按照此说明并分配路径https://openjfx.io/openjfx-docs/#install-javafx \n我\'m使用eclipse,对我来说,我需要将运行配置的参数更改为“-module-path =”/Users/XXX/Documents/javafx-sdk-11.0.2/lib”--add-modules javafx.controls ,javafx.fxml"\n之后,应用并运行。您很可能会收到“\xe2\x80\x9clibprism_es2.dylib\xe2\x80\x9d 无法打开,因为无法验证开发人员”。并且 \xe2\x80\x9clibprism_sw.dylib\xe2\x80\x9d 无法打开,因为无法验证开发人员。”这是向前迈出的一步,因为它们完全缺少 es2 和 sw。
  2. \n
  3. 然后按照这个解决办法:\xe2\x80\x9clibprism_sw.dylib\xe2\x80\x9d 无法打开,因为无法验证开发者。在 mac JAVAFX 上\n并授予它们访问权限(我花了很多次来重复授予多个库)\n最后,fx 正在运行!
  4. \n
\n