我在intellij上使用openjdk11 + javafx11
每次我尝试运行需要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 / production / 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示例。主要
(java:16177):Gdk-CRITICAL **:14:11:28.282:gdk_x11_display_set_window_scale:断言'GDK_IS_X11_DISPLAY(display)'失败
以退出代码134(被信号6:SIGABRT中断)结束的过程
答案 0 :(得分:0)
通过在运行命令中添加以下arg来强制jfx使用GTK2运行,我得以解决此问题:-Djdk.gtk.version = 2
背景:我在尝试在运行Xwayland的Fedora上运行Hello World example for OpenJFX时遇到了完全相同的错误,并且经过一番搜索发现an issue logged against openjdk-jfx描述了相同的问题。在注释中,它建议强制jfx与gtk2一起运行:
我们在本地对其进行了测试,并且可以重现崩溃(在不同于您报告的位置),并且它似乎与使用GTK3运行有关。在JDK 10中,默认后端是FX的GTK2,在FX 11中是GTK3。作为解决方法,可以通过运行以下命令来强制GTK 2:
java -Djdk.gtk.version = 2 ...
此外,您可以传递-Djdk.gtk.verbose = true来查看正在使用的内容。我还注意到,通过强制GTK 3,我们也可以在Wayland上使JDK 10崩溃。