You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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-missing
  • sudo apt-get update
  • sudo apt-get clean
  • sudo apt-get autoremove
  • sudo 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程序:

  1. 右键gdx-setup.jar,选择属性
  2. 切换到打开方式标签页
  3. 选择已安装的带GUI支持的Java Runtime(如OpenJDK 17 Runtime),勾选设为默认
  4. 再次双击jar尝试运行

4. 验证X11会话权限

确保当前用户拥有X11会话访问权限,执行以下命令检查:

xauth list

若输出为空或无当前显示:0的条目,手动添加权限:

xauth add :0 . $(mcookie)

之后重新运行jar文件。


内容的提问来源于stack exchange,提问作者Patryx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:10:37