1

我有一个在无头服务器上运行的应用程序。它是一个 Web 应用程序,但对于某个功能(调试),它运行基于 swing 的应用程序。由于服务器是无头的(我已经设置了-Djava.awt.headless=true)它在启动时抛出异常......

我已经尝试安装 Xvfb 但这并不能解决我的问题,因为 Xvfb 没有 GUI 输出并且我看不到输出。

因此,我想将该服务器的输出重定向/转发到另一台(例如我的笔记本电脑),以便查看 Swing 应用程序并对其进行调试。

有没有办法使用 DISPLAY 变量或其他任何方法来实现它?

谢谢。

4

3 回答 3

1

如果您的笔记本电脑上运行着 X 服务器,您可以在 SSH 中启用 X-Forwarding 后通过 ssh 进入您的服务器,它会自动将您的 DISPLAY 变量设置为 :10.0 行中的内容,您可以使用 GUI 运行您的应用程序导出到本地 X 服务器。

否则,如果您想手动设置 DISPLAY,则需要确保服务器可以通过 x-server 端口上的直接 TCP 连接访问您的笔记本电脑。

于 2011-11-30T16:31:17.013 回答
1

你可以

  1. 运行 Xvnc 并使用 VNC 客户端连接到它
  2. 将 Xvfb 与 x11vnc 一起运行并使用 VNC 客户端连接到它(这与上面的不同,但对您来说最终结果是相同的;仅当您出于其他原因已经运行 Xvfb 时才有用)
  3. 根据 favouretti 的回答,使用 ssh 转发 X11 会话(或直接 TCP 连接)

如果您的笔记本电脑上有 Windows 并且不想在其上运行 X11 服务器,则选项 1 或 2 很有用。然后,您可以使用 Windows 本机 VNC 客户端。

您还可以使用 RDP 代替 VNC(X11 端为 X11rdp 或 xrdp,Windows 端为 RDP 客户端)。这应该会提供更快的刷新率,但据说在 X11 端设置起来更困难(我没有亲自做过)。OTOH Windows 具有内置的 RDP 客户端,因此您甚至不必在 Windows 端安装任何东西。

如果您的笔记本电脑上有 X11,则使用选项 3 会容易得多。

于 2011-11-30T16:47:45.503 回答
1

我没有足够的“代表”来评论其他用户的答案,所以我的帖子是为了增加“favoretti”的好答案。

如果您正在运行 Windows PC,请安装 cygwin unix 子系统并安装 x-windows 和 ssh。如果使用 OSX 启动 X11 或 Mavericks 以后,请安装 xQuartz。

然后如前所述,您可以通过 ssh 进入目标(无头)远程服务器并指定 -X 标志以允许 X 流量通过网络返回

 ssh -l <user> -X -v <host>

您可能需要也可能不需要调用命令

xhost + 

允许 X 流量流回您的机器。

于 2014-05-23T19:04:05.817 回答