
我知道這是一個初學者的問題......但我已經搜索過並且感到沮喪。我非常了解 Lunux,但我從未接觸過 XServer。
問題一:
我以 alpha 使用者身分從 OSX SSH 到 UBUNTU 14.04 桌上型電腦。
使用者 alpha 也在該桌面上本機登入。
我想(透過我的終端)運行一個應在 UBUNTU 電腦上顯示的應用程式(以便其在本機登入使用者的本機顯示器上可見)。
今天,當我從 OSX 終端執行此操作時,我收到此錯誤:
15:21:20:157 AWT-EventQueue-0: Error
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
at java.awt.Window.<init>(Window.java:535)
at java.awt.Frame.<init>(Frame.java:420)
<etc>
注意:當我從本機終端(在 UBUNTU 上)執行此操作時,它會正常工作,因此程式沒有任何問題。
問題2:
如果 UBUNTU 機器是無頭的,我該如何將 Windows 轉移到另一台機器,例如我的 Mac?
謝謝彼得
答案1
對於第二個問題:使用 ssh 連線時新增 -X (或 -Y 表示可信任連線)參數,並確保您的 mac 上有 X11。例子:
ssh -X [email protected]
這會將您的 X11 視窗路由到顯示在 Mac 上的本機 X 伺服器上。
看:https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ssh.1.html
對於第一個問題:
顯示與權限
X 程式需要兩個資訊才能連接到 X 顯示。
它需要顯示器的位址,當您本地登入時,該位址通常為 :0;當您遠端登入時,該位址通常為 :10、:11 等(但該數字可能會根據活動的 X 連接數而變化) )。顯示器的位址通常在 DISPLAY 環境變數中指示。
它需要顯示密碼。 X顯示密碼稱為magic cookie。 Magic cookie 不是直接指定的:它們總是儲存在 X 權限檔案中,這些檔案是「display :42 has cookie 123456」形式的記錄集合。 X 權限檔案通常在 XAUTHORITY 環境變數中指示。如果未設定 $XAUTHORITY,程式將使用 ~/.Xauthority。
摘自: https://unix.stackexchange.com/a/10126
請參閱該帖子以獲得很好的解釋。
答案2
遠端情況下,您需要透過匯出 DISPLAY 環境變數來設定要使用的顯示。
例如。export DISPLAY=:0
對於第二個問題,最簡單的方法是在 ubuntu 上設定 VNC 伺服器並使用 VNC 用戶端從 Mac 連線。
如何:http://www.howtoforge.com/how-to-install-vnc-server-on-ubuntu-14.04
答案3
1)我不確定,也許嘗試一下export DISPLAY=0
?
2) 若要在您正在使用的電腦上顯示 GUI,請使用該-Y
選項執行 SSH。