You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启动Selenium Grid Hub报jar无主清单属性错误如何解决

问题描述

搭建Selenium Grid Hub节点时,执行如下命令尝试启动Hub:
java -jar selenium-server-4.0.0-alpha-2.jar -role hub
控制台返回报错:

no main manifest attribute, in selenium-server-4.0.0-alpha-2.jar

已在项目POM文件中配置maven-jar-plugin插件,配置代码如下:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-jar-plugin</artifactId>
   <configuration>
      <archive>
         <manifest>
            <mainClass>com.abc.qr.xyz.MainClass</mainClass>
         </manifest>
      </archive>
   </configuration>
</plugin>
核心原因

报错的本质是当前执行的selenium-server-4.0.0-alpha-2.jar包内,META-INF/MANIFEST.MF文件未配置Main-Class属性,JVM无法找到启动入口。
你在项目POM中配置的maven-jar-plugin仅对当前项目自身打包产出的jar生效,不会修改第三方依赖包的manifest配置,因此该配置和你当前遇到的报错没有关联。
常见触发原因有3种:

  • 用错了包:Maven中央仓库中selenium-server坐标下的普通jar包是供其他项目引用的依赖包,本身不带可执行启动入口,不是官方提供的可执行发行版
  • 包损坏:下载/拉取jar包时网络异常,导致本地存储的jar包残缺,manifest文件丢失
  • 版本命令不匹配:Selenium 4.0.0-alpha-2属于早期测试版,分发包结构、启动参数和3.x稳定版差异较大,沿用旧版启动参数+错误的包就会触发报错
排查解决步骤

按以下顺序操作即可解决:

  1. 先校验当前jar包是否为可执行包
    执行命令查看jar包内的manifest配置:
    jar xf selenium-server-4.0.0-alpha-2.jar META-INF/MANIFEST.MF && cat META-INF/MANIFEST.MF
    如果输出内容里没有Main-Class字段,直接丢弃当前包即可。
  2. 换用正确的Selenium分发包
    不要直接使用Maven依赖拉取的普通selenium-server jar启动Grid,要么下载对应版本的selenium-server-standalone可执行包,要么直接升级到Selenium 4.x正式版,正式版已经把Hub、Node、Standalone等启动入口整合到同一个发行包中。
  3. 调整启动命令
    如果使用Selenium 4.x正式版可执行包,启动Hub不需要加-role参数,直接执行:
    java -jar selenium-server-4.xx.jar hub
    如果不想单独下载可执行包,要通过项目依赖直接启动,可以通过-cp指定依赖路径和主类的方式启动,不需要依赖jar包本身的manifest配置:
    java -cp "target/dependency/*:target/classes" org.openqa.selenium.grid.Bootstrap hub
    
  4. 清理损坏的缓存包
    如果是Maven拉取的依赖包损坏,直接删除本地Maven仓库下org/seleniumhq/selenium/selenium-server/4.0.0-alpha-2整个目录,重新拉取依赖即可。

内容的提问来源于stack exchange,提问作者ktmrocks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 07:21:56