java.awt.HeadlessException в докере Дженкинс - PullRequest
0 голосов
/ 22 декабря 2018

Я получаю это исключение ниже в моем коде селена, когда я запускаю в нем свой jenkins, работающий через докер.

Это началось, когда я использовал класс робота для импорта файла для одного из моих сценариев.Когда я запускаю свой код в Jenkins, он выдает следующее исключение:

Exception: java.awt.HeadlessException: No X11 DISPLAY variable was set, but this program performed an operation which requires it. at sun.awt.HeadlessToolkit.getSystemClipboard(HeadlessToolkit.java:309) at PageObjectRep.QuickHlr.Click_on_Browser(QuickHlr.java:119) at stepDefinations.HLR_LookUp.clickOnBrowser(HLR_LookUp.java:70) at ✽.And Click on browser(Smoke.feature:178)

Примечание: Jenkins работает в докере.Я заранее ценю вашу помощь.

 Toolkit.getDefaultToolkit().getSystemClipboard().setContents(sel,null);
    System.out.println("selection" +sel);
    // Wait for 5 seconds
    Thread.sleep(5000);
    System.out.println("Browse button clicked");
    // Create object of Robot class
    Robot robot = new Robot();
    Thread.sleep(1000);
    // Press Enter
    robot.keyPress(KeyEvent.VK_ENTER);
    // Release Enter
    robot.keyRelease(KeyEvent.VK_ENTER);
    // Press CTRL+V
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_V);
    // Release CTRL+V
    robot.keyRelease(KeyEvent.VK_CONTROL);
    robot.keyRelease(KeyEvent.VK_V);
    Thread.sleep(1000);
    //Press Enter
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);
}

1 Ответ

0 голосов
/ 23 декабря 2018

Быстрый ответ

Вы не можете запустить Java-код GUI (графический пользовательский интерфейс) в работающей системе без пользовательского интерфейса, такого как серверы, целью которых является запуск приложений в фоновом режиме.Например, вам нужен рабочий стол.

Подробный ответ

Вы можете разделить Java на следующие категории:

Java SE = Standard Edition. Обычно используется дляПриложения с графическим интерфейсом или DESKTOP с такими классами, как JFrame, Robot, Toolkit и т. Д.

java se

Кроме того, содержит множество библиотек и API-интерфейсов, которые должен изучать любой Java-программист (java.lang, java.io, java.math, java.net, java.util и т. д.) используются в следующей категории.

Для запуска этого приложения требуется операционная система с пользовательским интерфейсом.Если вы запустите это приложение в tomcat, на таких серверах, как jenkins, widfly и т. Д. С использованием ubuntu / debian, solaris и т. Д., Некоторые части не будут работать из-за отсутствия зависимостей, которые есть только в операционных системах пользовательского интерфейса.Например, java.awt.Robot может переместить мышь на xy, но на сервере оболочки нет мыши.

Java EE = Enterprise Edition. JavaПлатформа (Enterprise Edition) используется для разработки распределенных систем, таких как доступ к базам данных (JDBC, JPA), удаленный вызов методов (RMI), обмен сообщениями (JMS), веб-сервисы, обработка XML, и определяет стандартные API для Enterprise JavaBeans, сервлетов, портлетов,Страницы сервера Java и т. Д. ...

jee

В настоящее время эта категория наиболее часто используется для разработки систем предприятий или компаний: отдых в Apis, интеграции, безопасность, микросервисы и т. Д. Такжеиспользуется для разработки серверов, платформ или библиотек, таких как: Tomcat, Jenkins, Pentaho, Mule ESB, Selenium, Spring и т. д.

Java ME = Micro Edition. Это платформа для разработки приложений.для мобильных устройств.Я думаю, что это устарело из-за Android и других инструментов.

...