我知道这是一个初学者的问题...但我已经搜索过了,结果很沮丧。我对 Lunux 很了解,但我从来没有处理过 XServer。
问题 1:
我以 alpha 用户身份从 OSX 通过 SSH 进入 UBUNTU 14.04 台式机。
用户 alpha 也在该桌面上本地登录。
我想(通过我的终端)运行一个应该显示在 UBUNTU 机器上的应用程序(以便它在本地登录用户的本地显示屏上可见)。
今天,当我从 OSX 终端执行此操作时出现此错误:
15:21:20:157 AWT-EventQueue-0: Error
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
at java.awt.Window.<init>(Window.java:535)
at java.awt.Frame.<init>(Frame.java:420)
<etc>
注意:当我从本地终端(在 UBUNTU 上)执行此操作时,它可以正常工作,因此程序没有任何问题。
问题2:
如果 UBUNTU 机器没有头,我该如何将窗口转移到另一台机器,例如我的 Mac?
谢谢彼得
答案1
对于您的第二个问题:使用 ssh 连接时添加 -X(或 -Y 表示受信任连接)参数,并确保您的 Mac 上有 X11。示例:
ssh -X [email protected]
这会将您的 X11 窗口路由到您的 Mac 上的本地 X 服务器上。
看:https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ssh.1.html
对于第一个问题:
显示和权限
X 程序需要两条信息才能连接到 X 显示器。
它需要显示器的地址,当您本地登录时,该地址通常为 :0;当您远程登录时,该地址通常为 :10、:11 等(但该数字可能会根据活动的 X 连接数而变化)。显示器的地址通常在 DISPLAY 环境变量中指示。
它需要显示的密码。X 显示密码称为 magic cookies。Magic cookies 不是直接指定的:它们始终存储在 X 授权文件中,这些文件是“display :42 has cookie 123456”形式的记录集合。X 授权文件通常在 XAUTHORITY 环境变量中指示。如果未设置 $XAUTHORITY,程序将使用 ~/.Xauthority。
摘自: https://unix.stackexchange.com/a/10126
请参阅该帖子以获得更详细的解释。
答案2
远程情况下,您需要通过导出 DISPLAY 环境变量来设置要使用的显示。
例如。export DISPLAY=:0
对于您的第二个问题,最简单的方法是在 ubuntu 上设置 VNC 服务器,并使用 VNC 客户端从您的 Mac 进行连接。
如何:http://www.howtoforge.com/how-to-install-vnc-server-on-ubuntu-14.04
答案3
1)我不确定,也许可以试试export DISPLAY=0
?
2) 要在您正在使用的机器上显示 GUI,请使用该-Y
选项运行 SSH。