java - Jenkins Selenium 插件初始化失败

标签 java selenium jenkins jenkins-plugins

我已经安装了 Jenkins Selenium Plugin但在启动时无法初始化。

Jenkins 启动日志

> java.net.SocketTimeoutException: Accept timed out     at
> java.base/java.net.PlainSocketImpl.socketAccept(Native Method)    at
> java.base/java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:458)
>   at java.base/java.net.ServerSocket.implAccept(ServerSocket.java:565)
>   at java.base/java.net.ServerSocket.accept(ServerSocket.java:533)    at
> hudson.slaves.Channels.newJVM(Channels.java:227)  at
> hudson.plugins.selenium.process.SeleniumProcessUtils.createSeleniumGridVM(SeleniumProcessUtils.java:59)
>   at hudson.plugins.selenium.PluginImpl.startHub(PluginImpl.java:176)
>   at
> hudson.plugins.selenium.PluginImpl.postInitialize(PluginImpl.java:136)
>   at hudson.PluginManager$2$1$2.run(PluginManager.java:575)   at
> org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:169)
>   at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296)   at
> jenkins.model.Jenkins$5.runTask(Jenkins.java:1131)    at
> org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214)  at
> org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)   at
> jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59)
>   at
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>   at
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>   at java.base/java.lang.Thread.run(Thread.java:834)

然后

> Completed initialization Aug 14, 2020 2:50:17 PM WARNING
> jenkins.model.Jenkins  Exception in onOnline() for the computer
> listener class hudson.plugins.selenium.ComputerListenerImpl on the
> Jenkins master node java.lang.NullPointerException    at
> hudson.plugins.selenium.PluginImpl.startSeleniumNode(PluginImpl.java:458)
>   at
> hudson.plugins.selenium.ComputerListenerImpl.onOnline(ComputerListenerImpl.java:30)

它似乎在 'hudson.slaves.Channels.newJVM(Channels.java:227)' 失败了

我尝试过的事情-

  • 禁用防火墙
  • 重新安装插件
  • 将调试级别设置为ALL 以帮助调试
  • 在 Jenkins 位置更改 Jenkins URL

从节点可以毫无问题地连接到主节点。

  • Java - 11.0.8+10-post-Ubuntu-0ubuntu118.04.1
  • Jenkins - 2.252
  • 操作系统 - Linux (ubuntu 18.04) Azure VM
  • Selenium 插件 3.141.59

这可能是什么原因造成的?

最佳答案

我有一个类似的问题,我认为主要原因是插件与 java 11 不兼容。还有另一个日志文件/var/lib/jenkins/selenium.log 在 jenkins 之后你可以看到以下输出开始:

 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -cp /var/cache/jenkins/war/WEB-INF/lib/remoting-4.5.jar hudson.remoting.Launcher -cp /var/lib/jenkins/plugins/selenium/WEB-INF/lib/selenium-server-standalone-3.141.59.jar:/var/lib/jenkins/plugins/selenium/WEB-INF/lib/htmlunit-driver-standalone-2.33.3.jar -connectTo localhost:37677
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by hudson.remoting.Launcher (file:/var/cache/jenkins/war/WEB-INF/lib/remoting-4.5.jar) to method java.net.URLClassLoader.addURL(java.net.URL)
WARNING: Please consider reporting this to the maintainers of hudson.remoting.Launcher
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Exception in thread "main" java.lang.IllegalArgumentException: object is not an instance of declaring class
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at hudson.remoting.Launcher.addClasspath(Launcher.java:154)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at io.jenkins.remoting.shaded.org.kohsuke.args4j.spi.MethodSetter.addValue(MethodSetter.java:47)
    at io.jenkins.remoting.shaded.org.kohsuke.args4j.spi.StringOptionHandler.parseArguments(StringOptionHandler.java:19)
    at io.jenkins.remoting.shaded.org.kohsuke.args4j.CmdLineParser.parseArgument(CmdLineParser.java:520)
    at hudson.remoting.Launcher.main(Launcher.java:293)

如果您使用 java 8 运行 jenkins,该插件将起作用。

关于java - Jenkins Selenium 插件初始化失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63415790/

相关文章:

java - 在 Jenkins 中通过 x64 运行 PowerShell

java - 如何同时显示模式和执行操作

java - 将 application.properties 与 tomcat 容器的 .war 分开

java - 如何从下拉列表循环中选择所有列表选项并选择每个选项

java - Selenium Select 不适用于 <select> 元素

spring-boot - 在 Jenkins、Spring Boot 和 Gradle 环境中构建版本号

java - 你能提供 Java 中的 scala View 边界吗?

java - 使用自定义类路径使用 GraalVM native 镜像命令行?

Python 3.6 Selenium 如何通过父节点的引用找到子节点(xPath)

docker - 无法使用 Artifactory 插件将 Docker 镜像推送到 Jenkins 管道中的 Artifactory