我知道这是一个反复出现的问题,但我还没有找到任何答案。
我在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
来呼叫它。
答案 0 :(得分:1)
由于您使用的是ProcessBuilder
并且不需要显示,因此您可以在.start()
此过程之前尝试执行此操作:
pb.environment().remove("DISPLAY");
是的,没错,environment()
会返回进程'环境变量的读写视图 ...
答案 1 :(得分:0)
所以这实际上解决了这个问题:
processBuilder.environment()。put(“DISPLAY”,“:99”);