docker jenkins中的java.awt.HeadlessException

时间:2018-12-22 13:45:53

标签: java selenium docker jenkins awtrobot

当我在通过docker运行的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在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);
}

1 个答案:

答案 0 :(得分:1)

快速回答

如果没有用户界面(如目标在后台模式下运行应用程序的服务器),则无法在操作系统中运行GUI(图形用户界面)Java代码。例如,您需要一个台式机。

详细答案

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

Java SE = Standard Edition。通常用于具有JFrame,Robot,Toolkit等类的GUI或DESKTOP应用程序。

java se

还包含许多Java程序员应学习的库和API(java.lang,java.io,java.math,java.net,java.util等),并在下一个类别。

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

Java EE =企业版。 Java平台(企业版)用于开发分布式系统,例如数据库访问(JDBC,JPA),远程方法调用(RMI),消息传递(JMS), Web服务,XML处理,并为Enterprise JavaBean,Servlet,Portlet,Java Server Pages等定义了标准API。

jee

当前,此类别最常用于企业或公司的系统开发:Apis rest,集成,安全性,微服务等。还用于开发服务器,平台或库,例如:Tomcat,Jenkins,Pentaho,Mule ESB,硒,春天等

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