Linux Java 程序 X11 DISPLAY 变量已设置,但是
Linux Java program X11 DISPLAY variable was set, but
我知道这是一个反复出现的问题,但我还没有找到任何答案。
我在 linux 服务器上(Ubuntu 14.04 LTS)并且我有一个 java 应用程序调用另一个来做一些操作,第一个 运行s 没有问题,但是第二个使用 GUI,当我调用它时,我得到了臭名昭著的错误“没有设置 X11 DISPLAY 变量,但是这个程序执行了一个需要它的操作。”。我已经有一个 Xvfb 实例 运行ning 并且我导出了 DISPLAY。
Xvfb :99 &
export DISPLAY=:99
如果我这样做
echo $DISPLAY
我得到:99
我可以通过命令行 运行 被调用的 java 应用程序并且它可以工作,但是当另一个 java 应用程序调用它时,它就不起作用。当我从另一个 java 应用程序调用 jar 时,为什么它没有 "see" DISPLAY 变量?我该如何解决这个问题?
注意:我使用 ProcessBuilder
来调用它。
由于您使用 ProcessBuilder
并且不需要显示器,您可以在 .start()
过程之前尝试执行此操作:
pb.environment().remove("DISPLAY");
是的,没错,environment()
returns进程环境变量的读写视图...
所以这实际上解决了问题:
processBuilder.environment().put("DISPLAY", ":99");
我知道这是一个反复出现的问题,但我还没有找到任何答案。
我在 linux 服务器上(Ubuntu 14.04 LTS)并且我有一个 java 应用程序调用另一个来做一些操作,第一个 运行s 没有问题,但是第二个使用 GUI,当我调用它时,我得到了臭名昭著的错误“没有设置 X11 DISPLAY 变量,但是这个程序执行了一个需要它的操作。”。我已经有一个 Xvfb 实例 运行ning 并且我导出了 DISPLAY。
Xvfb :99 &
export DISPLAY=:99
如果我这样做
echo $DISPLAY
我得到:99
我可以通过命令行 运行 被调用的 java 应用程序并且它可以工作,但是当另一个 java 应用程序调用它时,它就不起作用。当我从另一个 java 应用程序调用 jar 时,为什么它没有 "see" DISPLAY 变量?我该如何解决这个问题?
注意:我使用 ProcessBuilder
来调用它。
由于您使用 ProcessBuilder
并且不需要显示器,您可以在 .start()
过程之前尝试执行此操作:
pb.environment().remove("DISPLAY");
是的,没错,environment()
returns进程环境变量的读写视图...
所以这实际上解决了问题:
processBuilder.environment().put("DISPLAY", ":99");