“没有 X11 DISPLAY 变量”——这是什么意思?
- 2024-10-10 09:29:00
- admin 原创
- 89
问题描述:
我正在尝试在我的 Linux 机器(Slackware)上安装 Java 应用程序。
我收到了以下错误,但我不明白。
您能告诉我该如何解决这个问题吗?谢谢。
这是我得到的结果:(我看到需要设置一些X11 DISPLAY变量,但我应该给它什么值以及如何设置?)
~$ java -jar gate-5.0-beta1-build3048-installer.jar
- ERROR -
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(Graphic sEnvironment.java:159)
at java.awt.Window.<init>(Window.java:407)
at java.awt.Frame.<init>(Frame.java:402)
at net.sourceforge.mlf.metouia.borders.MetouiaDotsBuf fer.<init>(MetouiaDotsBuffer.java:105)
at net.sourceforge.mlf.metouia.borders.MetouiaDots.<i nit>(MetouiaDots.java:66)
at net.sourceforge.mlf.metouia.borders.MetouiaToolBar Border.<init>(MetouiaToolBarBorder.java:49)
at net.sourceforge.mlf.metouia.MetouiaLookAndFeel.ini tComponentDefaults(MetouiaLookAndFeel.java:241)
at javax.swing.plaf.basic.BasicLookAndFeel.getDefault s(BasicLookAndFeel.java:130)
at javax.swing.plaf.metal.MetalLookAndFeel.getDefault s(MetalLookAndFeel.java:1591)
at javax.swing.UIManager.setLookAndFeel(UIManager.jav a:537)
at javax.swing.UIManager.setLookAndFeel(UIManager.jav a:581)
at com.izforge.izpack.installer.GUIInstaller.loadLook AndFeel(GUIInstaller.java:373)
at com.izforge.izpack.installer.GUIInstaller.<init>(G UIInstaller.java:116)
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newI nstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Construc tor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:30
at com.izforge.izpack.installer.Installer.main(Instal ler.java:62)
解决方案 1:
如果你在主显示屏上,那么
export DISPLAY=:0.0
或者如果你使用 csh 或 tcsh
setenv DISPLAY :0.0
在运行您的应用程序之前。
实际上,我很惊讶它没有自动设置。您是否尝试从非图形终端启动此应用程序?如果没有,您是否修改了默认的 .profile、.login、.bashrc 或 .cshrc?
请注意,将 DISPLAY 设置为 :0.0 预先假设您正坐在主显示器前,如我所说,或者至少主显示器已登录到您的用户 ID。如果未登录,或者用户 ID 不同,则此操作将失败。
如果您从另一台机器进入,并且您位于该机器的主显示屏上,并且该机器正在运行 X,那么您可以使用“ssh -X hostname”连接到该主机,ssh 会将 X 显示转发回来。ssh 还将确保 DISPLAY 环境变量设置正确(前提是它没有被我上面提到的各种点文件弄乱)。在“ssh -X”会话中,DISPLAY 环境变量将具有类似“localhost:11.0”的值,它将指向 ssh 正在隧道传输到您的本地机器的套接字。
解决方案 2:
如果你的应用程序有 GUI,则有两种可能:
1-)如果你的 Java 应用程序有 GUI
首先确保你已经正常安装了 jdk 包(非 headless)。例如,如果你安装了这个:
sudo apt install openjdk-19-jre-headless
删除它:
sudo apt remove openjdk-19-jre-headless
然后安装普通版本:
sudo apt install openjdk-19-jre
简单来说,headless 是用于无 GUI 应用程序。更多信息可以在这里查看:openjdk-6-jre、openjdk-6-jre-headless、openjdk-6-jre-lib 之间的区别
然后,尝试将DISPLAY
变量设置为:
export DISPLAY=:0
或者如果它不起作用(那么,可能你有多个屏幕),设置为:
export DISPLAY=:1
或者如果仍然不起作用,请尝试2
、等等。(这取决于屏幕数量以及运行应用程序时使用的屏幕的屏幕编号。3
)4
然后运行你的jar
文件:
java -jar gate-5.0-beta1-build3048-installer.jar
2-)如果你的 Java 应用没有GUI
在运行应用程序时,您可以尝试java.awt.headless=true
标记为:
java -Djava.awt.headless=true -jar gate-5.0-beta1-build3048-installer.jar
附加说明
您还可以尝试在运行文件之前设置JAVA_TOOL_OPTIONS
变量,.jar
例如带有 GUI 的应用程序(1):
export JAVA_TOOL_OPTIONS='-Djava.awt.headless=false'
或者对于无 GUI 应用程序(2):
export JAVA_TOOL_OPTIONS='-Djava.awt.headless=true'
如果问题仍然存在,删除所有可能干扰的软件包可能是一个根本的解决方案。列出所有已安装的软件包:
sudo apt list --installed
然后删除其中所有、、相关且命名的java
包jdk
:jre
sudo apt remove <app-names-needed-to-remove-put-spaces-between>
然后安装所需的 java 包,例如(1)中给出的示例。
解决方案 3:
您必须在 PuTTy 中启用X11 转发
打开 PuTTy,转到连接 => SSH => 隧道,然后选中启用 X11 转发
同时使用 sudo 连接到服务器并导出以下变量,这里的 IP 是你本地机器的 IP
export DISPLAY=10.75.75.75:0.0
解决方案 4:
您是在 X11 环境中运行此程序吗?您可以使用终端窗口,但必须在 X 中(图形登录后或通过运行 startx)。
如果您已处于图形环境中,请尝试对类似 bash 的 shell(bash、sh 等)使用 export DISPLAY=:0 或对基于 C shell 的 shell(csh、tcsh 等)使用 setenv DISPLAY :0
如果您通过 SSH 从另一台机器连接,则可以使用 -X 选项在您所在的机器上显示图形界面(前提是那里正在运行 X 服务器(例如 Windows 的 xming 和标准 Linux X 服务器)。
解决方案 5:
有很多方法可以做到这一点。我做了一些对我来说很方便的事情,而且总是能正常工作。
在您的远程服务器上,确保安装 xorg-x11-xauth、xorg-x11-font-utils 和 xorg-x11-fonts。
在本地桌面上运行 Xming 服务器
在 putty 上,在 ssh 到服务器之前,启用 X11 转发并将显示位置设置为 localhost:0.0
在服务器上,生成 .Xauthority 文件,并注意 DISPLAY 变量已设置。
$ xauth 列表
$ xauth 添加
要测试它,请输入 xclock 或 xeyes
注意:要切换用户,请将 .Xauthority 文件复制到相应用户的主目录,并从该用户导出 DISPLAY 变量。
解决方案 6:
在与所述情况类似的情况下,可能存在问题的另一件事是 - 当远程端未安装“xauth”程序时,X 未转发且 $DISPLAY 未设置。您可以看到,当您运行“ssh -Xv ip_address”时,它会搜索它,如果未找到,则失败,除非您打开详细模式(在我看来是失败),否则不会出现这种情况。您通常可以在同名的包中找到“xauth”。
解决方案 7:
非常简单,遇到了同样的问题,然后我所做的就是下载并安装一个有助于显示的应用程序,然后修复了错误。
下载这个应用程序 xming:
http://sourceforge.net/project/downloading.php?
安装,然后使用此链接上的设置:
http://www.geo.mtu.edu/geoschem/docs/putty_install.html或按照以下步骤操作:
安装/配置 PuTTy 和 Xming
将 PuTTy 和 Xming 下载到 PC 后,按照各自的说明进行安装。
配置 Xming
安装 Xming 后,运行名为“XLaunch”的应用程序并验证设置如下:
在显示设置窗口中选择默认条目,单击下一步
在“会话类型”窗口中单击“下一步”。
在附加参数窗口上单击下一步(注意剪贴板复选框为真)
保存配置并单击完成。
配置PuTTy
安装PuTTy后,双击桌面上的PuTTy图标,按照图所示进行配置:
这显示创建登录配置文件然后保存它。
在 ssh -> X11 上,单击复选框以启用 X11 转发。
在 X 显示位置文本框中输入 localhost:0.0
保存配置文件然后远程连接到服务器进行测试。
干杯!!!
解决方案 8:
对于那些尝试在 Linux 上让 X Window 应用程序在 Windows 上运行的人来说:
对我有用的是在我的 Windows 机器上设置 xming 服务器,当我连接到 Linux 主机时在 Putty 中设置 X11 转发选项,并使用显示端口输入我的 Windows IP 地址,然后使用我的 Windows IP 地址输入显示变量:0.0
不要忘记将 Linux 主机的 IP 地址添加到 X0.hosts 文件中,以确保 xming 服务器接受来自该主机的流量。我花了一段时间才弄清楚。
解决方案 9:
export DISPLAY=172.16.1.148:0.0
172.16.1.148是你的电脑ip。
解决方案 10:
当我在 Ubuntu 14.04.01 中尝试安装 JDK 8 和 Netbeans 时,如果我在 Byobu 终端内启动脚本,也会遇到同样的问题(也许 Screens 也会发生同样的情况)。
只需退出 Byobu 并(在图形终端中)运行脚本。
解决方案 11:
初步检查。
1) 当您将 DISPLAY 导出到其他机器时,请确保xhost +
在该机器上输入了该命令。此命令允许其他机器将其 DISPLAY 导出到此机器。可能存在安全限制,只需了解即可。需要检查ssh -X MachineIP
是否需要xhost +
?
2)有时JCONSOLE
不会显示所有进程,因为这些 JVM 进程可能以不同的用户身份运行,而你正在以另一个用户身份导出 DISPLAY。所以最好遵循CD_DIR>sudo ./jconsole
3) 在 WAS(WEBSPHERE)中;jconsole 将无法连接其 java 服务器进程,此时只需转到链接,然后尝试连接它。这对我来说很有效。可能是此页面正在初始化一些变量以使 jconsole 能够连接到该服务器。
WAS 控制台 > 应用程序服务器 > server1 > 进程定义 > Java 虚拟机
我在 AIX(仅提供命令行界面,没有 DISPLAY UI)机器上遇到了同样的问题。我通过安装解决了这个问题
适用于 Windows 的 NX 客户端
步骤 1:通过该 Windows 计算机,我连接到具有 GUI 控制台的 UNIX 计算机。
步骤 2:从该 UNIX 计算机通过 SSH 连接到 AIX 计算机。
步骤 3:设置 DISPLAY,如“export DISPLAY=UNIXMACHINE:NXClientPORTConnectedMentionedOnTitle”
步骤 4:现在,如果我们启动任何需要 DISPLAY 的程序,它将在此 UNIX 计算机中启动。
虚拟网络计算机
如果您在具有显示功能的 UNIX 机器上安装了 VNC,则无需 Windows 和 NX 客户端。步骤 1:使用 VNC 连接具有 GUI 控制台的 Unix 机器。步骤
2:从该 UNIX 机器通过 SSH 连接到 AIX 机器。
步骤 3:设置 DISPLAY,如“export DISPLAY=UNIXMACHINE:VNCPORT”
步骤 4:现在,如果我们启动任何需要 DISPLAY 的程序,它将在此 UNIX 机器上启动。
别的
步骤 1:从 UNIX 机器通过 SSH 连接到 AIX 机器。
步骤 2:设置 DISPLAY,如“export DISPLAY=UNIXMACHINE:VNCPORT”
步骤 3:现在如果我们启动任何需要 DISPLAY 的程序,它将在此 UNIX 机器上启动。
解决方案 12:
设置显示模式就可以了,同时还要确保 apache Jmeter 从 USER 模式启动,不要在 ROOT 用户下运行。
$ cd /home/USER/apache-jmeter-5.5/
$ ./jmeter
解决方案 13:
不要忘记在“主”显示机上执行“host +”,并且当您 ssh 到您正在执行的机器时“ssh -x hostname”
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件