我知道这是一个反复出现的问题,但我还没有找到任何答案。
我在 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
来调用它。
最佳答案
由于您使用了 ProcessBuilder
并且不需要显示,您可以在 .start()
过程之前尝试执行此操作:
pb.environment().remove("DISPLAY");
是的,没错,environment()
返回进程环境变量的读写 View ...
关于java - 设置了 Linux Java 程序 X11 DISPLAY 变量,但是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28903276/