Это вопрос новичка, я знаю... но я искал и начинаю расстраиваться. Я знаю, как обращаться с Lunux, но мне никогда не приходилось иметь дело с XServer.
Вопрос 1:
Я подключаюсь по SSH из OSX к настольному компьютеру с UBUNTU 14.04 как пользователь alpha.
Пользователь 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 была без монитора, как бы я перенаправил окна на другую машину, например, на мой Mac?
Спасибо, Питер.
решение1
По второму вопросу: добавьте параметр -X (или -Y для доверенного соединения) при подключении по ssh и убедитесь, что на вашем Mac есть X11. Пример:
ssh -X [email protected]
Это направит ваши окна X11 на отображение на локальном X-сервере на вашем Mac.
Видеть:https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ssh.1.html
По первому вопросу:
ДИСПЛЕЙ и ВЛАСТЬ
Для подключения к X-дисплею программе X необходимы два вида информации.
Ему нужен адрес дисплея, который обычно равен :0, если вы вошли в систему локально, или :10, :11 и т. д., если вы вошли в систему удаленно (но число может меняться в зависимости от того, сколько соединений X активно). Адрес дисплея обычно указывается в переменной среды DISPLAY.
Ему нужен пароль для отображения. Пароли отображения X называются волшебными куки. Волшебные куки не указываются напрямую: они всегда хранятся в файлах полномочий X, которые представляют собой набор записей в форме «display :42 has cookie 123456». Файл полномочий X обычно указывается в переменной окружения XAUTHORITY. Если $XAUTHORITY не установлен, программы используют ~/.Xauthority.
Извлечен из: https://unix.stackexchange.com/a/10126
Подробное объяснение можно найти в этом посте.
решение2
Удаленно вам придется настроить дисплей для использования, экспортировав переменную окружения DISPLAY.
например.export DISPLAY=:0
Что касается вашего второго вопроса, самый простой способ — настроить VNC-сервер на Ubuntu и использовать VNC-клиент для подключения с вашего Mac.
Как:http://www.howtoforge.com/how-to-install-vnc-server-on-ubuntu-14.04
решение3
1) Я не уверен, может попробовать export DISPLAY=0
?
2) Чтобы отобразить графический интерфейс на используемой вами машине, запустите SSH с опцией -Y
.