Linux Java程序X11 DISPLAY变量已设置,但是

时间:2015-03-06 16:33:20

标签: java linux xvfb

我知道这是一个反复出现的问题,但我还没有找到任何答案。

我在linux服务器上(Ubuntu 14.04 LTS)我有一个java应用程序调用另一个来做一些操作,第一个运行没有问题,但第二个使用GUI,当我调用我得到了臭名昭着的错误"没有设置X11 DISPLAY变量,但是该程序执行了需要它的操作。 &#34 ;.我已经运行了一个Xvfb实例,并导出了DISPLAY。

Xvfb :99 &
export DISPLAY=:99

如果我这样做

echo $DISPLAY

我得到:99

我可以通过命令行运行被调用的java应用程序并且它可以工作,但是当它是另一个调用它的java应用程序时,它不起作用。为什么它没有"看到"从另一个java应用程序调用jar时的DISPLAY变量?我该如何解决这个问题?

注意:我使用ProcessBuilder来呼叫它。

2 个答案:

答案 0 :(得分:1)

由于您使用的是ProcessBuilder并且不需要显示,因此您可以在.start()此过程之前尝试执行此操作:

pb.environment().remove("DISPLAY");

是的,没错,environment()会返回进程'环境变量的读写视图 ...

答案 1 :(得分:0)

所以这实际上解决了这个问题:

processBuilder.environment()。put(“DISPLAY”,“:99”);