WSL 2环境运行JavaFX项目报错Unable to open DISPLAY 求解决方案
问题原因
报错Unable to open DISPLAY和JavaFX本身无关,是WSL2环境默认没有配置GUI显示转发导致的:Linux下的GUI程序(包括JavaFX)需要将画面输出到X显示服务器,切换到WSL2后没有配置对应X服务的地址,所以程序启动时找不到显示设备抛出异常。
解决方案
- 第一步:Windows端安装VcXsrv X服务器,启动时勾选
Disable access control选项,同时在Windows防火墙设置中允许VcXsrv通过专用、公用网络访问。 - 第二步:在WSL2的Ubuntu终端中执行以下命令配置DISPLAY环境变量,自动获取Windows主机的IP作为显示输出地址:
打开~/.bashrc文件,在末尾添加一行:
保存后执行export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0source ~/.bashrc使配置生效。 - 第三步:验证显示转发是否正常,执行以下命令安装测试工具并运行:
如果弹出显示眼睛的窗口,说明显示转发配置正常,此时再启动JavaFX项目即可正常运行。sudo apt update && sudo apt install -y x11-apps xeyes - 可选优化:如果你使用的是Windows 11且开启了WSLg(WSL默认GUI支持),无需安装VcXsrv,只需要将DISPLAY变量设置为
:0即可,即添加export DISPLAY=:0到~/.bashrc。
额外排查点
如果配置完仍无法启动,检查VS Code WSL终端的环境变量是否生效:重启VS Code终端后执行echo $DISPLAY,确认输出的IP地址正确,再启动项目即可。
内容的提问来源于stack exchange,提问作者hexaquark
相关产品推荐
相关产品推荐

