Ubuntu本地运行Libgdx的gdx-setup.jar遇X11 DISPLAY变量错误
解决本地Ubuntu运行gdx-setup.jar的X11 DISPLAY变量问题
问题描述
本地Ubuntu笔记本(非SSH远程)运行gdx-setup.jar时触发HeadlessException,报错内容如下:
Exception in thread "main" java.awt.HeadlessException: No X11 DISPLAY variable was set, or no headful library support was found, but this program performed an operation which requires it, at java.desktop/java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:166) at java.desktop/java.awt.Window.<init>(Window.java:553) at java.desktop/java.awt.Frame.<init>(Frame.java:428) at java.desktop/java.awt.Frame.<init>(Frame.java:393) at java.desktop/javax.swing.JFrame.<init>(JFrame.java:180) at com.badlogic.gdx.setup.GdxSetupUI.<init>(GdxSetupUI.java:101) at com.badlogic.gdx.setup.GdxSetup.main(GdxSetup.java:620)
已尝试以下命令修复但无效:
sudo apt-get update --fix-missingsudo apt-get updatesudo apt-get cleansudo apt-get autoremovesudo dpkg --configure -a(注:原命令缺少--,已修正语法)sudo apt install -f
其他情况:IntelliJ中运行AWT程序可正常显示GUI,echo $DISPLAY输出为0,已安装xorg-x11,将jar设为可执行后双击无响应。
解决方案
1. 显式指定DISPLAY变量运行jar
在终端中执行命令时强制传递DISPLAY变量,确保Java程序识别当前X11会话:
DISPLAY=:0 java -jar gdx-setup.jar
:0是本地X11会话的标准显示编号,与echo $DISPLAY输出匹配。
2. 检查并切换到带GUI支持的Java环境
部分Ubuntu默认安装的Java为headless(无GUI支持)版本,即便IntelliJ使用的是完整JDK,终端调用的Java可能不同。执行以下命令检查当前Java版本:
java -version
若输出包含headless字样,安装带完整GUI支持的JDK,例如OpenJDK 17:
sudo apt install openjdk-17-jdk
安装完成后切换默认JDK:
sudo update-alternatives --config java
选择对应带GUI支持的JDK选项即可。
3. 修复jar文件的桌面关联
双击无响应可能是jar未关联到正确的Java程序:
- 右键
gdx-setup.jar,选择属性 - 切换到打开方式标签页
- 选择已安装的带GUI支持的Java Runtime(如OpenJDK 17 Runtime),勾选设为默认
- 再次双击jar尝试运行
4. 验证X11会话权限
确保当前用户拥有X11会话访问权限,执行以下命令检查:
xauth list
若输出为空或无当前显示:0的条目,手动添加权限:
xauth add :0 . $(mcookie)
之后重新运行jar文件。
内容的提问来源于stack exchange,提问作者Patryx
相关产品推荐
相关产品推荐

