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

Java7 Spring Boot项目引入HtmlUnit2.21遇版本兼容性错误求助

解决Java7 Spring Boot项目中HtmlUnit引发的UnsupportedClassVersionError问题

这个错误的根源很清晰:你遇到的java.lang.UnsupportedClassVersionError: org/eclipse/jetty/websocket/api/Session : Unsupported major.minor version 52.0,说明Session类是用Java 8(对应版本号52.0)编译的,但你的项目运行在Java 7环境(版本号51.0),JVM自然无法加载这个类。

问题原因分析

你使用的HtmlUnit 2.21版本依赖的Jetty WebSocket组件已经升级到了Java 8兼容的版本(Jetty 9.3及以上版本要求Java 8),而你的Spring Boot 1.5.8.RELEASE虽然支持Java 7,但不会自动替你降级第三方依赖的版本,这就导致项目中混入了Java 8编译的类。

两种可行的解决方案

方案一:降级HtmlUnit到Java 7兼容版本

HtmlUnit 2.19及更早版本依赖的是Jetty 9.2.x系列,这个系列完全兼容Java 7。你可以直接在pom.xml中指定HtmlUnit的版本:

<dependency>
    <groupId>net.sourceforge.htmlunit</groupId>
    <artifactId>htmlunit</artifactId>
    <version>2.19</version>
</dependency>

方案二:强制覆盖Jetty WebSocket依赖版本

如果你不想降级HtmlUnit,可以通过Maven的依赖管理强制指定Jetty WebSocket相关组件的版本为Java 7兼容的版本(比如9.2.22.v20170606),这样会覆盖HtmlUnit带来的高版本依赖:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-websocket-api</artifactId>
            <version>9.2.22.v20170606</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-websocket-client</artifactId>
            <version>9.2.22.v20170606</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-websocket-common</artifactId>
            <version>9.2.22.v20170606</version>
        </dependency>
    </dependencies>
</dependencyManagement>

验证解决效果

修改后执行mvn dependency:tree命令,检查Jetty WebSocket相关依赖的版本,确保它们都是9.2.x系列,而不是9.3+的版本,这样就能彻底解决版本不兼容的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:39:09