java - 设置了 Linux Java 程序 X11 DISPLAY 变量,但是

标签 java linux xvfb

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

我在 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/

相关文章:

java - 将对象从一个类移动到另一个类 (Java)

c++ - *** 错误 `./pw' : free(): invalid pointer: 0x0000000000602200 ***

linux - 仅供 bash shell 中特定组中的用户执行的文件

c++ - 在 C++ 中,fork 和 kill 不会杀死所有的子进程

maven - 在 Jenkins 上运行 Maven Webdriver Testng 测试,无法识别的错误

linux - 如何操作屏幕输出?

java - STS 3.9 - Java 已启动但返回退出代码=13

java - 如何修复 intellij 中损坏的 java 类?

java - 如何用java中的不同方法在单个文件中逐行写入

ubuntu - JavaFX + Xvfb - 另一个 Xlib : extension "RANDR" missing on display ":99"