【发布时间】:2015-03-06 16:33:20
【问题描述】:
我知道这是一个反复出现的问题,但我还没有找到任何答案。
我在 linux 服务器 (Ubuntu 14.04 LTS) 上,我有一个 java 应用程序调用另一个应用程序来执行一些操作,第一个运行没有问题,但第二个使用 GUI,当我调用它时我得到臭名昭著的错误“没有设置 X11 DISPLAY 变量,但是这个程序执行了一个需要它的操作。”。我已经运行了一个 Xvfb 实例并导出了 DISPLAY。
Xvfb :99 &
export DISPLAY=:99
如果我这样做了
echo $DISPLAY
我收到:99
我可以通过命令行运行被调用的java应用程序并且它可以工作,但是当它是另一个调用它的java应用程序时,它就不起作用了。为什么当我从另一个 java 应用程序调用 jar 时它没有“看到” DISPLAY 变量?我该如何解决这个问题?
注意:我使用ProcessBuilder 来调用它。
【问题讨论】:
-
你真的需要显示器吗?如果没有,您可以使用
-Djava.awt.headless=true运行 JVM -
不,我不需要查看显示,但应用程序需要它(编码不佳)并且使用
-Djava.awt.headless=true运行它也不起作用。 -
除非你清除它,否则ProcessBulder会将调用者的环境传递给被调用的进程。
-
什么意思?他们在同一个环境中
-
你能更准确地说“不起作用”吗?