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

127

我正在尝试在我的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
3
没有一个答案提供了连接到远程控制台(通过puTTY)所需的信息。任何解决SSH的答案都没有真正解释如何使其工作。有人知道有关此问题的解决方案吗? - user2700923
13个回答

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 for Windows来解决这个问题。
步骤1:通过Windows机器连接到有GUI控制台的Unix机器。 步骤2:从该Unix机器SSH连接到AIX机器。 步骤3:设置DISPLAY为"export DISPLAY=UNIXMACHINE:NXClientPORTConnectedMentionedOnTitle"。 步骤4:现在,如果我们启动任何需要DISPLAY的程序,它将在这个Unix机器上启动。
如果您在具有显示界面的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
设置显示模式很好,还要确保Apache JMeter从您的用户模式启动,不要在ROOT用户下运行。
$ cd /home/USER/apache-jmeter-5.5/
$ ./jmeter

-3
不要忘记在您的“主页”显示机器上执行“host +”,当您ssh到正在执行“ssh -x hostname”的机器时。

14
强烈建议不要使用"xhost +",因为它会有效地禁用X服务器上的所有安全性。ssh聪明地使用xauth自动设置X11身份验证,所以不需要使用xhost。 - Wichert Akkerman
这应该是一个注释,而不是帖子。仅仅因为你不能发表评论,也并不意味着你应该发布一篇糟糕的帖子。 - Elliot A.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接