【发布时间】:2016-05-29 06:46:43
【问题描述】:
如果这个问题已经得到解答,请原谅我 - 我看了但找不到任何东西......
我在使用 SSH 运行 java 程序时遇到问题。我在我的 Mac 上本地从终端运行代码没有问题,但是当我尝试通过 SSH 连接到我的 Mac 上的另一个用户时,我得到了 HeadlessException。当我以该用户身份登录并在他们的终端窗口中运行它时,甚至没有任何问题 - 该问题仅在使用 SSH 时出现。
我发出以下命令:
>> ssh -X remoteguest@host
>> java LifeCounter
我收到以下错误:
java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)
at java.awt.Window.<init>(Window.java:536)
at java.awt.Frame.<init>(Frame.java:420)
at javax.swing.JFrame.<init>(JFrame.java:233)
at setupGUI.<init>(LifeCounter.java:156)
at LifeCounter$1.run(LifeCounter.java:18)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
任何帮助将不胜感激。
TIA
【问题讨论】:
-
你能详细说明你想要达到的目标吗?
-
您显然正在运行一个带有图形 UI (awt) 的应用程序。但是当您使用 ssh 时,它只是一个命令行界面和图形用户界面,而不是它的一部分。公平地说,在 Mac(和大多数其他 Unix)上,在其他人的 UI 会话上运行图形 UI 程序在技术上是可行的,但它相当复杂。
-
是的,对不起 - 我应该更具体。我正在尝试通过远程运行图形应用程序(用 Swing 编写)并使用 SSH 连接到机器。如果我在服务器上本地运行程序,它运行没有问题,如果我在客户端本地运行程序,它运行没有问题。当我尝试使用 XQuartz 转发图形时出现问题
-
我对 XQuartz 本身有很多经验,但考虑到它是 X Windows。我建议尝试设置 DISPLAY 环境变量。例如。尝试ssh到机器,然后输入命令如下:DISPLAY=:0.0 java LifeCounter
-
您也可以查看这篇关于在别人的会话中运行应用程序的帖子apple.stackexchange.com/questions/100829/…