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

本地正常运行的Java Selenium爬虫部署Linux后启动失败求助

问题分析与解决方案

核心问题本质

java.lang.NoClassDefFoundError: org/openqa/selenium/interactions/Coordinates 是因为打包后的JAR缺少对应依赖类,或依赖版本、环境兼容存在问题,结合你的配置和环境,从以下几点排查解决:

1. Spring Boot打包依赖未完整引入

如果使用默认Maven打包插件,只会打包项目自身代码,不会包含所有第三方依赖。必须通过Spring Boot专用打包插件将所有依赖(包括Selenium相关)嵌入可执行JAR。

解决操作:
检查pom.xml中的打包插件配置,确保包含以下内容:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

执行mvn clean package重新生成可执行JAR。

2. Selenium依赖冗余与版本不兼容

  • 你同时引入了selenium-java和selenium-api,但selenium-java已经包含selenium-api,重复引入可能导致依赖解析异常,直接删除selenium-api依赖即可。
  • Selenium 4.6.0的适配范围最高到Chrome 106,而你使用的Chrome 122版本差距过大,必然引发底层类加载问题。需升级Selenium到适配Chrome 122的版本(推荐4.18.1,完美支持Chrome 119-122)。

修改后的依赖配置:

<!-- selenium-java -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.18.1</version>
</dependency>

同时更换ChromeDriver为与Chrome完全匹配的版本(你的Chrome是122.0.6261.111,需使用同版本号的ChromeDriver,当前使用的122.0.6261.94小版本不匹配,也会引发兼容问题)。

3. Linux服务器缺失Chrome运行依赖库

Linux环境下即使启用headless模式,Chrome仍需要基础系统依赖库支持,缺失会间接导致类加载异常。

解决操作(Debian/Ubuntu系统):

apt-get install -y libx11-xcb1 libxcb-dri3-0 libdrm2 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libasound2

验证流程

  1. 重新打包项目确保依赖完整
  2. 替换ChromeDriver为匹配版本
  3. 安装Linux依赖库后,执行java -jar autoCrawler-0.0.1-SNAPSHOT.jar测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 11:23:14