“没有X11 DISPLAY变量”-是什么意思?


102

我正在尝试在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)

我遇到同样的问题,它可以在控制台上正常运行,但是当我使用eclipse时,它会抛出相同的异常,我什至将代码行放进去:Process proc_exporting = Runtime.getRuntime()。exec(“ sudo export DISPLAY =:0.0”) ; 仍然不起作用
hb.Sara 2011年

3
通过puTTY远程连接到控制台时,没有答案提供解决此问题所需的信息。解决SSH的任何答案实际上并没有说明如何使其工作。任何人都知道可以解决这个问题的问题吗?

Answers:


120

如果您在主显示屏上,则

export DISPLAY=:0.0

或者如果您使用的是csh或tcsh

setenv DISPLAY :0.0

在运行您的应用之前。

实际上,我很惊讶它没有自动设置。您是否要从非图形终端启动此应用程序?如果没有,您是否修改了默认的.profile,.login,.bashrc或.cshrc?

请注意,如我所说,将DISPLAY设置为:0.0会假设您正坐在主显示屏上,或者至少主显示屏已登录到您的用户ID。如果未登录,或者是其他用户名,则将失败。

如果您是从另一台计算机进来的,并且您正在该计算机的主显示屏上运行X,则可以使用“ ssh -X主机名”连接到该主机,并且ssh会将X显示屏转发回去。ssh还将确保DISPLAY环境变量设置正确(前提是我在上面提到的各种点文件中没有弄乱它)。在“ ssh -X”会话中,DISPLAY环境变量将具有“ localhost:11.0”之类的值,该值将指向ssh隧道传输到本地盒的套接字。


嗨,非常感谢,第一个为我工作。是的,我是从非图形终端启动的。
user42155 2009年

听起来好像它想访问图形显示。当图形显示不可用或它属于其他用户标识时,请小心不要运行它。
Paul Tomblin,2009年

3
请注意,此操作有效是因为您在控制台上。如果您在另一个终端上,则必须在终端上运行X服务器,然后将环境设置为指向您的计算机(例如export DISPLAY ='pauls终端的主机名':0.0)
KevinDTimm,2009年

@kevindtimm,要点-我将把@Mikeage关于ssh -X的信息纳入我的答案。
Paul Tomblin,2009年

1
如果您需要运行需要连接到X服务器的自动化任务,则可以查看xvfb,它会创建一个虚拟X服务器。这对于某些批处理测试或运行测试非常有用。
Wichert Akkerman 2011年

10

您是在X11环境中运行此程序吗?您可以使用终端窗口,但是它必须在X内(图形登录后或通过运行startx)。

如果您已经在图形环境中,请尝试为DISPLAY这样的bash导出DISPLAY =:0(例如bash,sh等),或者对于基于C shell的shell(csh,tcsh等)尝试setenv DISPLAY:0:

如果您是通过SSH从另一台计算机连接的,则可以使用-X选项在您所坐的计算机上显示图形界面(前提是那里正在运行X服务器(例如Windows的xming和标准Linux X)服务器)。


嗨,我正在运行startx。
user42155 2009年

哦,对,Slackware。它仍然像我十年前使用它时那样准系统吗?
Paul Tomblin,2009年

默认情况下,它仍在运行级别3中启动。当然,如果您告诉它在运行级别5中启动,则假设您已安装KDE,则将获得漂亮的KDM登录菜单。
亚当·贾斯基维奇

谢谢!在CentOS和SSH(putty)上使用: export DISPLAY=:0
jacktrades 2012年

8

您必须在您的PuTTy中启用X11转发

为此,请打开PuTTy,转到Connection => SSH => Tunnels并选中“ 启用X11转发”

也sudo到服务器并导出以下变量,这里IP是您本地计算机的IP

export DISPLAY=10.75.75.75:0.0

在此处输入图片说明


4

与上述情况类似的另一件事可能是问题-远程端未安装'xauth'程序时,不转发X且未设置$ DISPLAY。运行“ ssh -Xv ip_address”时,您可以看到它正在搜索它,并且如果找不到,它将失败,除非您打开详细模式(IMO失败),否则它不会看到。通常,您可以在具有相同名称的软件包中找到“ xauth”。


3

非常简单,如果遇到相同的问题,那么我所做的就是下载并安装了一个有助于显示然后修复错误的应用程序。

下载此应用程序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”的应用程序,并验证设置是否如下所示:

  • 在“显示设置”窗口中选择“默认条目”,然后单击“下一步”。
  • 单击会话类型窗口中的下一步。
  • 在“其他参数”窗口上单击下一步(“通知剪贴板”复选框为true)
  • 保存配置,然后单击完成。

配置PuTTy

安装PuTTy之后,双击桌面上的PuTTy图标并进行如下配置:

这显示了创建登录配置文件然后保存它。

  • 在ssh-> X11上,单击复选框以启用X11转发。
  • 在X显示位置文本框中,键入localhost:0.0

保存配置文件,然后远程连接到服务器进行测试。

干杯!!!


请在答案本身中包含来自链接的基本信息,因为它们最终可能会失效,从而使答案无用。
plamut

2

有很多方法可以做到这一点。我做了一些对我来说不方便的事情,并且总是正常工作。

  1. 在远程服务器上,确保安装xorg-x11-xauth,xorg-x11-font-utils,xorg-x11-fonts。
  2. 在本地桌面上运行Xming Server
  3. 在腻子上,在将ssh发送到服务器之前,启用X11转发并将显示位置设置为localhost:0.0
  4. 在服务器上,生成.Xauthority文件,并注意DISPLAY变量已设置。

    $ xauth列表

    $ xauth添加

要测试它,请键入xclock或xeyes

注意:要切换用户,请将.Xauthority文件复制到相应用户的主目录,然后从该用户导出DISPLAY变量。


0

如果我在Byobu终端内启动脚本(也许与Screens发生的情况相同),则在尝试安装JDK 8和Netbeans时,在Ubuntu 14.04.01中遇到了相同的问题。

只需退出Byobu并(在图形终端中)运行脚本即可。


0

初步检查。

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)。我通过安装解决了

NX Client Windows版

步骤1:通过该Windows计算机,我连接了可使用GUI控制台的unix框。
步骤2:从该UNIX框SSH到AIX框。
步骤3:将DISPLAY设置为“ export DISPLAY = UNIXMACHINE:NXClientPORTConnectedMentionedOnTitle”。
步骤4:现在,如果我们启动任何需要DISPLAY的程序;它将在此UNIX盒上启动。

VNC

如果您在有显示功能的UNIX框中安装了VNC,则不需要Windows和NX Client。步骤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盒上启动。


0

对于那些试图从Linux的Windows上运行X Window应用程序的人:

对我有用的是在Windows计算机上设置xming服务器,在连接到Linux主机时在腻子中设置X11转发选项,并使用显示端口输入Windows ip地址,然后使用Windows IP地址输入显示变量:0.0

不要忘记将Linux主机IP地址添加到X0.hosts文件中,以确保Xming服务器接受来自该主机的流量。花了我一段时间才能弄清楚。


-3

不要忘记在“ home”显示计算机上执行“ host +”,并且在ssh到该计算机时,您正在执行“ ssh -x主机名”


14
我强烈建议不要使用“ xhost +”,因为如果有效地禁用了X服务器上的所有安全性。ssh足够聪明,可以使用xauth来自动设置X11身份验证,因此不需要使用xhost。
Wichert Akkerman 2011年

这应该是评论,而不是帖子。仅仅因为您无法发表评论并不意味着您应该发表不好的帖子。
Elliot A.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.