【发布时间】:2021-09-14 03:07:54
【问题描述】:
我刚从 Ubuntu 20.04 发行版切换回带有集成 WSL 2 的 Windows,但在运行我的 JavaFX 项目时遇到了问题。
我在main 方法内的launch(args) 周围收到以下错误堆栈跟踪:
hexaquarks@LAPTOP-KPPA3O52:~/Particle_Geometry_Simulation$ cd /home/hexaquarks/Particle_Geometry_Simulation ; /usr/bin/env /usr/lib/jvm/java-11-openjdk-amd64/bin/java --module-path /usr/share/openjfx/lib --add-modules javafx.controls,javafx.fxml,javafx.swing -Dfile.encoding=UTF-8 @/tmp/cp_eiv0idm2cbh7kd2tl4ddw7ff7.argfile AppFrame
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: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)
Caused by: java.lang.UnsupportedOperationException: Unable to open DISPLAY
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$new$6(GtkApplication.java:173)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.<init>(GtkApplication.java:171)
at javafx.graphics/com.sun.glass.ui.gtk.GtkPlatformFactory.createApplication(GtkPlatformFactory.java:41)
at javafx.graphics/com.sun.glass.ui.Application.run(Application.java:144)
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:258)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:269)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:409)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
... 5 more
系统配置
$ java -version
openjdk version "11.0.11" 2021-04-20 OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"
$ java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)
项目树
$ [.../Particle_Geometry_Simulator] tree
.
├── .vscode
| ├── launch.json
| └── settings.json
├── bin
└── src
├── AppFrame.java
├── ... // f files here
└── ParticleFunJavaFx.fxml
launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Launch AppFrame",
"request": "launch",
"vmArgs": "--module-path /usr/share/openjfx/lib --add-modules javafx.controls,javafx.fxml,javafx.swing",
"mainClass": "AppFrame",
"projectName": "Particle_Geometry_Simulation_4f401646"
},
{
"type": "java",
"name": "Launch Current File",
"request": "launch",
"mainClass": "${file}"
},
{
"type": "java",
"name": "Launch GameFrame",
"request": "launch",
"vmArgs": "--module-path /usr/share/openjfx/lib --add-modules javafx.controls,javafx.fxml,javafx.swing",
"mainClass": "GameFrame",
"projectName": "Particle_Geometry_Simulation_4f401646"
}
]
}
settings.json
{
"java.project.sourcePaths": ["src"],
"java.project.outputPath": "bin",
"java.project.referencedLibraries": [
"lib/**/*.jar",
"/usr/share/openjfx/lib/javafx-swt.jar",
"/usr/share/openjfx/lib/javafx.media.jar",
"/usr/share/openjfx/lib/javafx.web.jar",
"/usr/share/openjfx/lib/javafx.graphics.jar",
"/usr/share/openjfx/lib/javafx.fxml.jar",
"/usr/share/openjfx/lib/javafx.controls.jar",
"/usr/share/openjfx/lib/javafx.base.jar",
"/usr/share/openjfx/lib/javafx.swing.jar"
]
}
我尝试过的事情
我几乎查看了关于这个问题的所有关于 SO 的帖子,但没有成功。
sudo apt install libgtk-3-0
不是修复,因为我已经安装了这个。
我也尝试删除openjfx 并从另一个镜像重新安装它,但没有成功。目前我有这个包,我已经安装了它
sudo apt install openjfx
有人知道这里可能发生了什么吗?
【问题讨论】:
-
您是否正在运行支持 GUI (WSLg) 的 Windows Insider 构建?如果没有,除非您安装了第三方 X 服务器或正在使用
xrdp,否则这将是预期行为。请参阅this question,这是多个可能的答案。如果您正在运行支持 WSL GUI 的系统,请编辑您的问题以包含您正在使用的机制。谢谢! -
根据您在下面的自我回答,这绝对是我上面链接的问题/答案的副本。我建议您接受您应该在标题中看到的“重复”建议。
-
@NotTheDr01ds 不正确,虽然我感谢您建议重复,但我遵循了所有 cmets 中的每条指令,但它们都不足以解决问题。您显然没有阅读那里提供的所有答案并与我提供的链接进行比较,否则,您不会对我的答案投反对票。我只是想在未来对某人有所帮助。
标签: ubuntu javafx windows-subsystem-for-linux openjfx