我在 intellij 上使用 openjdk 11 + javafx 11
每次我尝试运行需要 javafx 的代码时,都会收到此错误。经过一番谷歌搜索后,它似乎与显示服务器有关(xorg,使用 archlinux kde 5)。但我找不到任何可以帮助我解决问题的东西。
如果有人能够提供一些对该解决方案的见解,那就太好了。
这是我运行时得到的输出:
/usr/lib/jvm/jdk-11.0.1/bin/java -Djava.library.path=/usr/lib/jvm/javafx-sdk-11.0.1/lib --module-path /usr/lib/jvm /javafx-sdk-11.0.1/lib --add-modules=javafx.controls,javafx.fxml -javaagent:/home/rurudu/Intellij/idea-IC-182.4892.20/lib/idea_rt.jar=45449:/ home/rurudu/Intellij/idea-IC-182.4892.20/bin -Dfile.encoding=UTF-8 -classpath /home/rurudu/IdeaProjects/HelloFX/out/product/HelloFX:/usr/lib/jvm/javafx-sdk -11.0.1/lib/src.zip:/usr/lib/jvm/javafx-sdk-11.0.1/lib/javafx-swt.jar:/usr/lib/jvm/javafx-sdk-11.0.1/lib /javafx.web.jar:/usr/lib/jvm/javafx-sdk-11.0.1/lib/javafx.base.jar:/usr/lib/jvm/javafx-sdk-11.0.1/lib/javafx.fxml .jar:/usr/lib/jvm/javafx-sdk-11.0.1/lib/javafx.media.jar:/usr/lib/jvm/javafx-sdk-11.0.1/lib/javafx.swing.jar:/ usr/lib/jvm/javafx-sdk-11.0.1/lib/javafx.controls.jar:/usr/lib/jvm/javafx-sdk-11.0.1/lib/javafx.graphics.jar 示例.Main
(java:16177):Gdk-CRITICAL **:14:11:28.282:gdk_x11_display_set_window_scale:断言“GDK_IS_X11_DISPLAY(显示)”失败
进程完成,退出代码为 134(被信号 6 中断:SIGABRT)
我能够通过将此参数添加到运行命令来强制 jfx 使用 GTK2 运行来解决此问题: -Djdk.gtk.version=2
背景:我在尝试运行时遇到了完全相同的错误OpenJFX 的 Hello World 示例 https://openjfx.io/openjfx-docs/#install-javafx在运行 Xwayland 的 Fedora 上,经过一番搜索发现针对 openjdk-jfx 记录的问题 https://github.com/javafxports/openjdk-jfx/issues/175这描述了同样的问题。在评论中,它建议强制 jfx 与 gtk2 一起运行:
我们在本地对其进行了测试,并且可以重现崩溃(在与您报告的不同的地方),并且看起来它与使用 GTK3 运行有关。 JDK 10 中 FX 的默认后端是 GTK2,FX 11 中默认后端是 GTK3。作为解决方法,您可以通过运行以下命令强制使用 GTK 2:
java -Djdk.gtk.version=2 ...
另外,您可以传递 -Djdk.gtk.verbose=true 来查看正在使用的内容。我还注意到,通过强制使用 GTK 3,我们也可以使 JDK 10 在 Wayland 上崩溃。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)