java.awt.HeadlessException 在 docker 詹金斯

java.awt.HeadlessException in docker jenkins

当我 运行 在我的 jenkins 中 运行 正在通过 docker.

时,我在我的 selenium 代码中得到以下异常

当我使用机器人 class 为我的一个场景导入文件时,它就开始了。 当我 运行 我在 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 运行正在 docker 中。 感谢您的提前帮助。

 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);
}

快回答

您不能在没有用户界面的操作系统中 运行 GUI(图形用户界面)java 代码,例如在后台 objective 是 运行 应用程序的服务器模式。例如,您需要一个桌面。

详细回答

您可以将 Java 分为以下类别:

Java SE = 标准版。 通常用于具有 类 的 GUI 或桌面应用程序,如 JFrame、Robot、Toolkit 等。

此外,包含许多 Java 程序员应该学习的库和 API(java.lang、java.io、java.math、java.net、 java.util, 等等...) 并在下一类别中使用。

要运行这个应用程序,需要一个带有用户界面的操作系统。如果您 运行 此应用程序在 tomcat 中,在 jenkins、widfly 等服务器中使用 ubuntu/debian、solaris 等,由于缺少只有用户界面操作系统具有的依赖项,某些部分将无法工作.例如,java.awt.Robot可以将鼠标移动到x.y,但在shell服务器中没有鼠标。

Java EE =企业版。 Java平台(企业版)用于开发分布式系统,如数据库访问(JDBC、JPA)、远程方法调用 (RMI)、消息传递 (JMS)、Web 服务、XML 处理,并为企业 JavaBeans、servlet、portlet、Java 服务器定义标准 API页面等...

目前,此类别最常用于企业或公司系统开发:API rest、集成、安全、微服务等。还用于开发服务器、平台或库,如:Tomcat、Jenkins , Pentaho, Mule ESB, Selenium, Spring, 等等

Java ME = Micro Edition。 这是为移动设备开发应用程序的平台。我认为由于 Android 和其他工具,现在已弃用它。