javafx - 运行 JavaFX 项目时,在我的 M1 MacBook 上出现“图形设备初始化失败:es2,sw”错误
问题描述
我正在为 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 中找不到合适的管道。在 javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:222) 在 javafx.graphics/com.sun.javafx.tk 的quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)。 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) at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang 的 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)。 reflect.Method.invoke(Method.java:566) at 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。java.base/java.lang.Thread.run(Thread.java:834) 处的 QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124) java.base/jdk 处的线程“main”java.lang.reflect.InvocationTargetException 中的异常.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) 原因:java .lang.RuntimeException:在 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();
}
}
解决方案
我已经更新了系统并更改了以前的 fx jar,然后得到与你类似的警告。(大苏尔 11.4)这是解决方案:
- 访问https://gluonhq.com/products/javafx/并再次下载 JDK。然后按照此说明操作并设置路径https://openjfx.io/openjfx-docs/#install-javafx 我正在使用 eclipse,对我来说,我需要将运行配置的参数更改为“-module-path=”/ Users/XXX/Documents/javafx-sdk-11.0.2/lib" --add-modules javafx.controls,javafx.fxml" 之后,应用并运行。您很可能会得到“无法打开“libprism_es2.dylib”,因为无法验证开发人员。” 并且“libprism_sw.dylib”无法打开,因为无法验证开发人员。”这是一个进步,因为它们完全缺少 es2 和 sw。
- 然后按照这个解决方案:“libprism_sw.dylib”无法打开,因为无法验证开发者。在 mac JAVAFX 上 并授予他们访问权限(我花了很多时间重复授予多个库)最后,fx 正在运行!
推荐阅读
- reactjs - ReactJS - 使用延迟加载自动创建块
- laravel - 错误的迁移称为
- python - 将列中的字符串转换为python中的Nan
- angular - 在 AnyChart 中单击行后如何更改变量的文本?
- python - 将 PageRank 应用于主题层次树(使用从 DBpedia 提取的 SPARQL 查询)
- java - 无法从 Payara 5.2020.4 上的 JSP 页面中访问 JNDI 数据源
- python - Python:py 和 pip 命令
- r - 在由字符串和数字组成的小标题中添加一行
- r - 使用 Bray-Curtis 的 nMDS - 分组绘图
- python - 如何使用matplotlib python区分x轴上两列的颜色值?