[英]How to set or export display variable through java code?
我們需要在tomcat的啟動文件和批處理服務器的啟動文件中添加export DISPLAY=:0.0
。 這是為了讓java在Unix上看到X11 Display庫並運行我們的applet。 如果沒有在啟動文件中導出,則applet會拋出無頭異常。
雖然這種顯式導出使java applet運行,但它會破壞服務器上運行的其他應用程序。 有沒有辦法讓我可以在java代碼中運行此export DISPLAY=:0.0
而不是將其添加到啟動文件中? 如果有可能,這會是一個好方法嗎?
我已經嘗試將系統屬性設置為-Djava.awt.headless=true
,但它不起作用。 正如上面給出的鏈接http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/也說設置headless = true只適用於Canvas,Panel這樣的少數組件,但它不適用於頂層級別組件。
所以我覺得唯一的選擇就是使用export DISPLAY=:0.0
。 這使得我的applet在啟動文件中設置時工作,但會導致服務器中運行的其他應用程序出現問題。 因此,如果有人可以幫助我進行export DISPLAY=:0.0
工作,使其不會干擾服務器中的其他應用程序。 我認為的一種方法是通過代碼導出顯示。
任何幫助將受到高度贊賞。
我相信您實際上可以設置系統屬性-Djava.awt.headless=true
,這將允許訪問圖形庫而無需實際需要顯示。
有關詳細信息,請參閱http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/ 。
從您的問題來看,您的配置似乎存在嚴重問題。 Tomcat應始終能夠在沒有顯示器的情況下運行服務器端。 Applet 總是在瀏覽器中運行,並從瀏覽器獲取x11環境。 applet的jar可以由tomcat,apache或其他東西提供,但那是無關緊要的。
如果您的applet與服務器通信,請確保服務器代碼與您的applet代碼完全分開(將它們保存在單獨的項目中),並且它不使用任何awt代碼。 如果它(用於圖像處理等),則使用-Djava.awt.headless作為jdewald說。
這對其他應用程序有何影響? 您是如何在啟動腳本中定義環境變量的? 如果您正確定義變量,它應該只影響由啟動腳本啟動的程序,即Tomcat和批處理服務器。
此外,您的原始問題並沒有真正加起來。 您是否在同一台計算機上運行服務器和客戶端(Tomcat和Web瀏覽器)?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.