未设置 X11 DISPLAY 变量,但此程序执行的操作需要它

未设置 X11 DISPLAY 变量,但此程序执行的操作需要它

我正在尝试使用 ssh / 连接到服务器在 RedHAt7 上安装程序。我收到以下输出

Exception in thread "main" java.lang.ExceptionInInitializerError
    at org.greenstone.gatherer.Gatherer.init(Gatherer.java:284)
    at org.greenstone.gatherer.Gatherer.<init>(Gatherer.java:234)
    at org.greenstone.gatherer.GathererProg.main(GathererProg.java:78)

Caused by: java.awt.HeadlessException:
    No X11 DISPLAY variable was set, but this program performed an operation which requires it.
    at sun.awt.HeadlessToolkit.getScreenSize(Unknown Source)
    at org.greenstone.gatherer.Configuration.<clinit>(Configuration.java:111)
    ... 3 more

如何修复 X11 显示?

答案1

如果目标主机上运行着 X 服务器,而您希望程序在那里显示,通常执行“export DISPLAY=:0”,其中 :0 表示正在运行的第一个 X 服务器。如果您在目标主机上运行着多个 X 服务器(例如 Xvnc),则 :0 可能会变成 :1 或其他数字,具体取决于 X 服务器配置。

如果您在本地运行 X 服务器(您正在连接的机器),则可以使用“ssh -X ...”或“ssh -Y”登录主机并将您的显示转发到远程运行的程序。请参阅其他答案通过 SSH 重定向 X 服务器。

编辑:请检查链接文章中的答案。
总结:

  1. 确保目标上安装了 xauth
  2. 在 /etc/sshd_config 中设置X11Forwarding yes
  3. 使用 -vv 运行 ssh 来检查问题是什么(如果有的话)

相关内容