2015-02-23 54 views
2

更新:作爲標記重複,我只想提及,這似乎是重複的,但其他提到的問題的答案並不完全正確。請參閱下面的接受答案。 isHeadless在某些情況下會返回意外的錯誤。檢查系統/計算機是否有顯示器或圖形輸出可用

它有點奇怪的情況,但最近我建立了一個非常簡單的Java應用程序,可以在控制檯/終端模式或JavaFX UI模式下運行。

但是,在沒有附加任何顯示器的遠程計算機上使用它時。我得到了一個錯誤,即這個JavaFX UI應用程序無法在沒有顯示的系統上啓動,這很明顯。

爲了解決這個問題,我一直在尋找一種可靠的方式來檢測系統是否附加了任何顯示器,它可以啓動一個JavaFX應用程序,該應用程序必須是獨立於平臺的解決方案,因爲它可以是Windows或Ubuntu/Linux或Mac系統。本申請的

結構:

A主控制檯應用程序,這取決於輸入參數執行內部一個控制檯應用程序UI應用

因此,如果給出任何參數,在控制檯模式下運行,或者如果沒有參數,然後在UI模式下運行。 這是我想要檢測是否在我的主控制檯應用程序中有顯示可用的位置,如果缺少顯示,它甚至不會嘗試運行UI應用程序。

任何想法,我們如何才能實現這一點或建議在一個適當的方向將是偉大的。

+0

怎麼樣在try..catch?你能檢測到確切的錯誤代碼/消息/類型? – jean 2015-02-23 11:02:58

+0

@jean:是絕對真實的,但我一直在尋找更像是一種內部Java方式來檢測這種情況,而不是進入捕捉異常階段。這就是爲什麼我說一個強大的方式。因爲Java拋出這個異常意味着它必須一直讀取它或檢測它。這就是我想知道:) – Indigo 2015-02-23 11:06:26

回答

1

我想你可以使用java.awt.GraphicsEnvironment

GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices(); 

它會返回一個數組的所有可用的屏幕。如果此數組爲空,則不存在監視器。

編輯:關於使用isHeadless(),你可以看看How to determine if GraphicsEnvironment exists

+0

是的,這正是我想要的。但只是看看Vulcan [here](http://stackoverflow.com/a/4245227/1584507)標記爲重複的問題,這似乎是一個正確的方法,對此有何評論? – Indigo 2015-02-23 11:49:17

+1

用一個關於GraphicsEnvironment.isHeadless() – antonio 2015-02-23 11:54:50

+0

的鏈接編輯我的答案謝謝,這清除了所有的煙:) – Indigo 2015-02-23 12:56:11

相關問題