簡體   English   中英

如何通過java代碼設置或導出顯示變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM