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

时间:2009-03-19 14:28:51

标签: java linux variables x11 headless

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

10 个答案:

答案 0 :(得分:103)

如果您在主显示屏上,那么

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正在隧道连接到本地盒的套接字。

答案 1 :(得分:10)

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

如果你已经在图形环境中,请尝试导出DISPLAY =:0表示bash,如shell(bash,sh等)或setenv DISPLAY:0表示基于C shell的shell(csh,tcsh等)

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

答案 2 :(得分:6)

您必须在PuTTy中启用 X11转发

这样做打开PuTTy,转到 Connection =&gt; SSH =&gt;隧道并勾选启用X11转发

同样sudo到服务器并导出以下变量这里IP是你的本地机器的IP

export DISPLAY=10.75.75.75:0.0

enter image description here

答案 3 :(得分:4)

One more thing that might be the problem in a case similar to described - X is not forwarded and $DISPLAY is not set when 'xauth' program is not installed on the remote side. You can see it searches for it when you run "ssh -Xv ip_address", and, if not found, fails, which's not seen unless you turn on verbose mode (a fail IMO). You can usually find 'xauth' in a package with the same name.

答案 4 :(得分:2)

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

下载此应用程序xming:

http://sourceforge.net/project/downloading.php

安装,然后使用此链接上的设置:

http://www.geo.mtu.edu/geoschem/docs/putty_install.html或按照以下步骤操作:

安装/配置PuTTy和Xming

将PuTTy和Xming下载到PC后,请按照各自的说明进行安装。

配置Xming

安装Xming后,运行名为&#39; XLaunch&#39;并验证设置如下所示:

  • 在“显示设置”窗口中选择默认条目,然后单击“下一步”
  • 在“会话类型”窗口中单击“下一步”。
  • 单击“附加参数”窗口旁边的“通知剪贴板复选框为真”
  • 保存配置并点击完成。

配置PuTTy

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

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

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

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

干杯!!!

答案 5 :(得分:0)

我在Ubuntu 14.04.01中遇到了同样的问题,当我尝试安装JDK 8和Netbeans时,如果我在Byobu终端内启动脚本(可能屏幕也是如此)。

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

答案 6 :(得分:0)

初步检查。

1)当您将DISPLAY导出到其他机器时,请确保在该机器上输入了命令xhost +。此命令允许其他机器在此机器上导出其DISPLAY。可能存在安全限制,只需知道它。需要检查ssh -X MachineIP是否需要xhost +

2)有些时候JCONSOLE不会显示其所有进程,因为那些JVM进程可能与不同的用户一起运行,而您正在与另一个用户一起导出DISPLAY。所以最好按照CD_DIR>sudo ./jconsole

3)在WAS(WEBSPHERE)中; jconsole无法连接其java服务器进程,那个时间直到链接,然后尝试连接它。这对我有用。可能是这个页面正在初始化一些变量以使jconsole能够与该服务器连接。

WAS控制台&gt;应用程序服务器&gt; server1&gt; <处理定义> Java虚拟机


我遇到了与AIX(其中命令行界面仅可用,没有DISPLAY UI)机器相同的问题。我通过安装

解决了
  

适用于Windows的NX客户端

步骤1:通过该Windows机器,我连接了GUI控制台可用的unix框 步骤2:从该UNIX框连接到AIX框 第3步:将DISPLAY设置为&#34;导出DISPLAY = UNIXMACHINE:NXClientPORTConnectedMentionedOnTitle&#34;
第4步:现在我们启动任何需要DISPLAY的程序;它将在这个UNIX盒子上启动。

  

VNC

如果在UNIX上安装了VNC,显示可用;然后不需要Windows和NX客户端。 步骤1:使用VNC连接可用GUI控制台的Unix机箱 步骤2:从该UNIX框连接到AIX框 第3步:将DISPLAY设置为&#34;导出DISPLAY = UNIXMACHINE:VNCPORT&#34;
第4步:现在我们启动任何需要DISPLAY的程序;它将在这个UNIX盒子上启动。

ELSE

步骤1:从该UNIX框连接到AIX框 第2步:将DISPLAY设置为&#34;导出DISPLAY = UNIXMACHINE:VNCPORT&#34;
第3步:现在我们启动任何需要DISPLAY的程序;它将在这个UNIX机器上启动。

答案 7 :(得分:0)

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

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

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

答案 8 :(得分:0)

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

  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 add

要进行测试,请输入xclock或xeyes

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

答案 9 :(得分:-3)

不要忘记在“家用”显示器上执行“host +”,当你ssh到机器时,你正在做“ssh -x hostname”