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

use*_*155 94 java linux x11 variables 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)
Run Code Online (Sandbox Code Playgroud)

Pau*_*lin 107

如果你在主显示器上,那么

export DISPLAY=:0.0
Run Code Online (Sandbox Code Playgroud)

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

setenv DISPLAY :0.0
Run Code Online (Sandbox Code Playgroud)

在运行您的应用之前.

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

请注意,将DISPLAY设置为:0.0,假设您正坐在主显示屏上,正如我所说,或者至少主显示屏已登录到您的用户ID.如果它没有登录,或者它是不同的用户ID,则会失败.

如果您从另一台机器进入,并且您在该机器的主显示器上并且它正在运行X,那么您可以使用"ssh -X hostname"连接到该主机,并且ssh将向后转发X显示器.ssh还将确保正确设置DISPLAY环境变量(假设它没有在我上面提到的各种点文件中搞乱).在"ssh -X"会话中,DISPLAY环境变量将具有类似"localhost:11.0"的值,该值将指向ssh正在隧道连接到本地盒的套接字.

  • 请注意,这是有效的,因为您在控制台上.如果您在另一个终端上,则必须在终端上运行X服务器,然后将环境设置为指向您的计算机(导出DISPLAY ='pauls terminal'的主机名:例如0.0) (3认同)
  • 如果您需要运行需要连接到 X 服务器的自动化任务,您可以查看 xvfb,它会创建虚拟 X 服务器。这对于一些批量测试或运行测试非常有用。 (2认同)

Mik*_*age 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)服务器).


Gir*_*ore 7

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

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

另外sudo到服务器并导出下面的变量这里IP是你本地机器的IP

export DISPLAY=10.75.75.75:0.0
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Cel*_*luk 7

如果您的应用程序有 GUI 或没有 GUI,则有两种可能性:

1-)如果你的java应用程序有GUI,首先确保你已经正常安装了jdk包(非headless)。例如,如果您安装了这个:

sudo apt install openjdk-19-jre-headless
Run Code Online (Sandbox Code Playgroud)

去掉它:

sudo apt remove openjdk-19-jre-headless
Run Code Online (Sandbox Code Playgroud)

然后安装普通版本:

sudo apt install openjdk-19-jre
Run Code Online (Sandbox Code Playgroud)

Simply headless 用于无 GUI 应用程序。您可以在这里查看更多信息:openjdk-6-jre、openjdk-6-jre-headless、openjdk-6-jre-lib 之间的区别

然后,尝试将DISPLAY变量设置为:

export DISPLAY=:0
Run Code Online (Sandbox Code Playgroud)

或者如果它不起作用(那么,可能您有多个显示器),请设置为:

export DISPLAY=:1
Run Code Online (Sandbox Code Playgroud)

然后运行你的jar文件:

java -jar gate-5.0-beta1-build3048-installer.jar
Run Code Online (Sandbox Code Playgroud)

2-)如果您的java应用程序没有GUI,当您运行应用程序时,您可以尝试java.awt.headless=true标记为:

java -Djava.awt.headless=true -jar gate-5.0-beta1-build3048-installer.jar
Run Code Online (Sandbox Code Playgroud)


Dry*_*_09 5

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

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

    $ xauth 列表

    $ xauth 添加

要测试它,请键入 xclock 或 xeyes

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