客户端服务器GUI资源

时间:2014-05-09 16:20:09

标签: ubuntu user-interface clojure x11 headless

很抱歉这个简短的问题和很长的解释。

我的本地Clojure程序运行正常并使用GUI控件,但是当从服务器运行时,它会失败。你能帮忙吗?

我一直在无头Ubuntu(14.04)服务器上测试Clojure示例代码。我在LightTable中运行程序,然后再次运行它们,LT连接到Ubuntu repl。

对我来说不起作用的程序是在本机OS X中打开文件选择器对话框的程序,这样我就可以将文档上传到服务器。似乎服务器程序找不到我的Macbook找到的某些GUI资源。我有一次工作,一个小时,我使用的网站找到功能,没问题。

我觉得自己陷入了一种地狱般的状态,试图让这个样本发挥作用,我真的需要它才能发挥作用。

我有VirtualBox扩展包,它应该提供VRDE。

我尝试了不同的服务器启动选项和ssh选项。如果我设置环境变量,我的客户端程序将无法使用详细信息。

对我来说最糟糕的是,它确实有效 - 一次。我使工作变革永久化的努力再次破坏了它。尽管快照恢复并恢复了我的Macbook,但我无法再使用此设置。

简而言之,在客户端上运行的GUI程序在从服务器运行时会遇到问题。请帮忙。我已经被困了好几天了。

我不知道它是否有帮助但是,我安装了Xauth和Webmin。 Webmin被描述为用于Linux的基于Web的GUI管理工具。'

我被建议使用Java WebStart,但我读到这是自动包含和使用的。我无法进一步研究它的解决方案。

我提供了从LightTable复制的完整错误消息,以防您帮助我:

**java.awt.HeadlessException: 
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
GraphicsEnvironment.java:207 java.awt.GraphicsEnvironment.checkHeadless
          Window.java:535 java.awt.Window.<init>
           Frame.java:420 java.awt.Frame.<init>
           Frame.java:385 java.awt.Frame.<init>
          JFrame.java:174 javax.swing.JFrame.<init>
         (Unknown Source) com.ociweb.swing.proxy$javax.swing.JFrame$ActionListener$c1f703.<init>
         (Unknown Source) com.ociweb.swing$eval7839.invoke
       Compiler.java:6703 clojure.lang.Compiler.eval
       Compiler.java:6666 clojure.lang.Compiler.eval
            core.clj:2927 clojure.core/eval
              eval.clj:77 lighttable.nrepl.eval/->result
             AFn.java:156 clojure.lang.AFn.applyToHelper
             AFn.java:144 clojure.lang.AFn.applyTo
             core.clj:626 clojure.core/apply
            core.clj:2468 clojure.core/partial[fn]
          RestFn.java:408 clojure.lang.RestFn.invoke
            core.clj:2559 clojure.core/map[fn]
          LazySeq.java:40 clojure.lang.LazySeq.sval
          LazySeq.java:49 clojure.lang.LazySeq.seq
              RT.java:484 clojure.lang.RT.seq
             core.clj:133 clojure.core/seq
            core.clj:2595 clojure.core/filter[fn]
          LazySeq.java:40 clojure.lang.LazySeq.sval
          LazySeq.java:56 clojure.lang.LazySeq.seq
             Cons.java:39 clojure.lang.Cons.next
          LazySeq.java:81 clojure.lang.LazySeq.next
              RT.java:598 clojure.lang.RT.next
              core.clj:64 clojure.core/next
            core.clj:2856 clojure.core/dorun
            core.clj:2871 clojure.core/doall
             eval.clj:126 lighttable.nrepl.eval/eval-clj
          RestFn.java:442 clojure.lang.RestFn.invoke
            sonar.clj:215 lighttable.nrepl.sonar/eval5355[fn]
             AFn.java:152 clojure.lang.AFn.applyToHelper
             AFn.java:144 clojure.lang.AFn.applyTo
             core.clj:624 clojure.core/apply
            core.clj:1862 clojure.core/with-bindings*
          RestFn.java:425 clojure.lang.RestFn.invoke
            sonar.clj:203 lighttable.nrepl.sonar/eval5355[fn]
         MultiFn.java:227 clojure.lang.MultiFn.invoke
              core.clj:98 lighttable.nrepl.core/queued[fn]
            core.clj:2402 clojure.core/comp[fn]
interruptible_eval.clj:138 clojure.tools.nrepl.middleware.interruptible-eval/run-next[fn]
              AFn.java:22 clojure.lang.AFn.run
ThreadPoolExecutor.java:1145 java.util.concurrent.ThreadPoolExecutor.runWorker
ThreadPoolExecutor.java:615 java.util.concurrent.ThreadPoolExecutor$Worker.run
          Thread.java:744 java.lang.Thread.run**

2 个答案:

答案 0 :(得分:1)

我不太了解你的设置给出解释,但我之前遇到过这个错误,用-Djava.awt.headless = true运行java / clojure解决了这个问题。 有关详细信息,请参阅here

答案 1 :(得分:0)

如果您希望远程列表能够在本地系统上打开窗口

ssh -X core.domain.com 
lein repl ....

这将导致远程服务器创建的任何窗口通过与桌面的SSH连接进行隧道传输。只要你保持SSH连接活着就行了。