尝试使用 GUI 运行 Java 实用程序时出现 X11 转发错误

X11 Frwarding Error while trying to run a Java Utility with GUI

我正在尝试通过 PuTTY 在 UNIX 服务器上 运行 一个 java 实用程序。这个 JAVA 实用程序启动一个 GUI。当我 运行 此实用程序使用以下命令时

./DAVTree.sh

我收到以下错误

    Exception in thread "main" java.awt.HeadlessException: 
    No X11 DISPLAY variable was set, but this program performed an operation 
    which requires it.

    at java.awt.GraphicsEnvironment.checkHeadless(Unknown Source)
    at java.awt.Window.<init>(Unknown Source)
    at java.awt.Frame.<init>(Unknown Source)
    at java.awt.Frame.<init>(Unknown Source)
    at javax.swing.JFrame.<init>(Unknown Source)
    at com.sas.services.webdav.tools.DAVTree.<init>(DAVTree.java:319)
    at com.sas.services.webdav.tools.DAVTree.main(DAVTree.java:944) 

我在互联网上搜索了一个名为 X11 Forwarding 的问题,但我不知道那是什么,但我通过谷歌搜索遵循了建议,所以我使用 PuTTY 创建了一个新会话

Connection > SSH > X11 检查是 Enable X11 Forwarding

现在,当我再次 运行 实用程序时,error\exception 消息已更改,现在说。

Exception in thread "main" java.lang.InternalError: Can't connect to X11 window  

server using 'localhost:10.0' as the value of the DISPLAY variable.

at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access0(Unknown Source)
at sun.awt.X11GraphicsEnvironment.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.X11GraphicsEnvironment.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(Unknown Source)
at java.awt.Window.init(Unknown Source)
at java.awt.Window.<init>(Unknown Source)
at java.awt.Frame.<init>(Unknown Source)
at java.awt.Frame.<init>(Unknown Source)
at javax.swing.JFrame.<init>(Unknown Source)
at com.sas.services.webdav.tools.DAVTree.<init>(DAVTree.java:319)
at com.sas.services.webdav.tools.DAVTree.main(DAVTree.java:944)

现在说没有设置DISPLAY变量。所以我试试这个

export DISPLAY=kcsclm92:7001

kcsclm:7001 将是我的服务器。在此之后,当我 运行 实用程序时,它给出了相同的错误,只有以下区别

Exception in thread "main" java.lang.InternalError: Can't connect to X11 window  

server using 'kcsclm92:7001' as the value of the DISPLAY variable.

这之后我已经在盲目工作了,我没有更多的尝试了。请帮忙。

p.s。 (对于了解 SAS 的人)我在 UNIX 服务器上部署了 SAS,我正在尝试 运行 DAVTree Utility。

您的 本地 Windows 机器 需要 X "server" 运行。 (是的,术语令人困惑)。尝试 http://mobaxterm.mobatek.net/

注意,Putty 会自动创建正确的 DISPLAY 设置,所以不要更改它(localhost:10 听起来不错)。