113

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

10 回答 10

134

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

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

于 2009-03-19T14:30:17.033 回答
10

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

如果您已经在图形环境中,请尝试 export DISPLAY=:0 用于 bash 之类的 shell(bash、sh 等)或 setenv DISPLAY :0 用于基于 C shell 的 shell(csh、tcsh 等)

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

于 2009-03-19T14:36:40.293 回答
10

您必须在 PuTTy 中启用X11 转发

为此打开 PuTTy,转到Connection => SSH => Tunnels并选中Enable X11 forwarding

还 sudo 到服务器并在此处导出以下变量 IP 是您本地机器的 IP

export DISPLAY=10.75.75.75:0.0

在此处输入图像描述

于 2016-08-31T13:36:45.183 回答
5

有很多方法可以做到这一点。我做了一些对我来说很方便的事情,而且总是很好。

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

    $ xauth 列表

    $ xauth 添加

要测试它,请输入 xclock 或 xeyes

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

于 2019-05-22T18:20:40.743 回答
4

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

于 2015-06-15T14:41:59.357 回答
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”的应用程序并验证设置是否如下所示:

  • 在显示设置窗口中选择默认条目,单击下一步
  • 在会话类型窗口中单击下一步。
  • 单击附加参数窗口上的下一步(注意剪贴板复选框为真)
  • 保存配置并点击完成。

配置 PuTTy

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

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

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

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

干杯!!!

于 2016-01-28T09:52:01.710 回答
1

对于那些试图让 X Window 应用程序从 Linux 的 Windows 工作的人:

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

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

于 2017-04-20T14:36:56.093 回答
0

如果我在 Byobu 终端内启动脚本,我在 Ubuntu 14.04.01 中也遇到了同样的问题(可能与 Screens 相同)。

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

于 2014-10-01T10:44:05.977 回答
0

初步检查。

1) 当您将 DISPLAY 导出到其他机器时,请确保您xhost +在该机器上输入了命令。该命令允许其他机器在这台机器上导出他们的 DISPLAY。可能存在安全限制,只需了解即可。需要检查ssh -X MachineIP会不会需要xhost +

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

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

WAS 控制台 > 应用程序服务器 > server1 > 进程定义 > Java 虚拟机


我在 AIX(命令行界面仅可用,没有 DISPLAY UI)机器上遇到了同样的问题。我通过安装解决了

适用于 Windows 的 NX 客户端

第 1 步:通过那台 Windows 机器,我连接到有 GUI 控制台可用的 unix box。
第 2 步:从 UNIX 框通过 SSH 连接到 AIX 框。
第 3 步:将 DISPLAY 设置为“export DISPLAY=UNIXMACHINE:NXClientPORTConnectedMentionedOnTitle”
第 4 步:现在如果我们启动任何需要 DISPLAY 的程序;它将在这个 UNIX 机器上启动。

VNC

如果您在显示可用的 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 机器上启动。

于 2014-12-08T11:49:15.570 回答
-3

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

于 2011-08-25T19:18:15.147 回答