Доступ к дисплею X11

Я использую CIS, который автоматически запускает сборку и тесты. Тесты отлично работают с Windows, но при запуске в rhel выдается переменная X11 Display not set.

Я убедился, что X11 установлен, и я могу вернуть xclock с помощью Xmanager. Намерение не состоит в том, чтобы передать дисплей клиенту, но я использовал Xmanager, чтобы проверить, установлен ли X11.

Когда дисплей не экспортируется, тесты, использующие графику, завершаются сбоем, но когда я set export DISPLAY=0.0 выдал java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment

Этот источник говорит, что исключение cNF вводит в заблуждение.

Вот фрагмент этого содержания:

К сожалению, это сообщение об ошибке несколько вводит в заблуждение. Это сообщение на самом деле не отражает проблему загрузки класса. Ошибки можно избежать, установив переменную среды DISPLAY в соответствующем файле конфигурации.

Это означает, что дисплей не экспортируется должным образом, но тест не сообщает об отсутствии дисплея X11. Что мне не хватает сделать?

Предложения приветствуются!


person Mohan    schedule 10.01.2011    source источник
comment
Тема вопроса не очень поучительна (и не вопрос ;)   -  person Volker Stolz    schedule 10.01.2011


Ответы (3)


Я не уверен из вашего описания, хотите ли вы запускать тесты без X11. В этом случае вы можете использовать безголовый режим, чтобы сообщить AWT, что вы не хочу графический вывод. Это должно позволить запускать ваши тесты, если они не интерактивны.

Я не понимаю, как можно запускать такие вещи, как xclock, но не Java. Отсутствует какой-либо промежуточный шаг? Вы подключаетесь по ssh к хосту, который должен запускать тесты?

person Volker Stolz    schedule 10.01.2011
comment
Привет ShiDoiSi, спасибо за ответ! Я хочу, чтобы тесты запускались с включенным X11. Сервер проверяет код из svn, строит и запускает тесты. Я не подключаюсь к серверу по ssh для запуска теста. Тесты запускаются периодически или когда кто-то проверяет svn. - person Mohan; 10.01.2011
comment
Я использовал Xmanager, используя ssh, просто чтобы убедиться, что сервер может отображать графику. - person Mohan; 10.01.2011
comment
Сервер интеграции имеет отдельную учетную запись на сервере Linux. Нужен ли этой учетной записи какой-либо специальный доступ для использования среды X11? - person Mohan; 10.01.2011
comment
@Mohan Вы входите в эту другую учетную запись с помощью ssh или используете какой-либо другой способ, например «su»? Вы проверили, что можете начать, например. xclock с этой учетной записи? - person Volker Stolz; 10.01.2011
comment
Да, я вхожу в свою учетную запись с помощью ssh. Я не проверял это, запустив xclock из этой учетной записи. Только что попробовал со своего аккаунта. я проверю это. Спасибо! - person Mohan; 13.01.2011
comment
@Mohan Пока вы этим занимаетесь, вы также можете сообщить о (дезинфицированном) выводе ssh -v ... при входе в систему. Должно быть сообщение о том, включена ли X-forwarding или нет. - person Volker Stolz; 13.01.2011
comment
Все, с помощью xhost я дал разрешение на учетную запись, которую я использую для запуска автоматических тестов. Теперь я получаю исключение CNF, связанное с X11. java.lang.NoClassDefFoundError: не удалось инициализировать класс sun.awt.X11.XToolkit - person Mohan; 20.01.2011
comment
Вы выполнили тест, о котором я упоминал выше, например. запуск xclock? Заставьте это работать, прежде чем переходить к Java. - person Volker Stolz; 25.01.2011

экспорт DISPLAY=0.0

Это синтаксическая ошибка. Вы должны использовать: export DISPLAY=:0.0

(Обратите внимание на двоеточие.)

Как только это будет правильно, вам нужно будет убедиться, что пользователь, у которого запускаются ваши тесты, имеет разрешения на X-сервер. См. xauth или небезопасное, но тривиальное тестирование xhost +.

person Nathan Kidd    schedule 10.01.2011
comment
Привет, Натан, я использую команду с двоеточием, это опечатка в вопросе. Мне нужно проверить с помощью xauth или xhost+. Спасибо! - person Mohan; 13.01.2011

У вас работает дисплей X?

Один из распространенных способов получить отображение для автоматических тестов — использовать «фальшивый» сервер отображения Xvfb. Запустите Xvfb, затем установите DISPLAY, указывающий на него.

person Havoc P    schedule 10.01.2011
comment
Я пытался установить xvfb, но было много конфликтов, я попытаюсь установить его, если другие варианты не работают. - person Mohan; 13.01.2011