![](/img/trans.png)
[英]java.awt.HeadlessException - No X11 DISPLAY variable was set, but this program performed an operation which requires it
[英]Linux Java program X11 DISPLAY variable was set, but
我知道這是一個經常性的問題,但尚未找到任何答案。
我在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()
返回該進程的環境變量的讀寫視圖 ...
所以這實際上解決了問題:
processBuilder.environment()。put(“ DISPLAY”,“:99”);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.