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

Spring Boot 3升级遇java.lang.NoClassDefFoundError: SocketUtils问题求助

问题解决:Spring Boot 3 搭配 spring-cloud-contract-wiremock 出现 SocketUtils 缺失错误

问题原因

Spring Boot 3 彻底移除了org.springframework.util.SocketUtils类,而你当前使用的spring-cloud-contract-wiremock:3.1.5版本仍依赖这个已被删除的类,导致测试执行时触发NoClassDefFoundError。该版本的Spring Cloud Contract WireMock未适配Spring Boot 3的API变更。

解决方法

方法1:升级到适配Spring Boot 3的Spring Cloud Contract WireMock版本

Spring Cloud 2022.0.x(代号Kilburn)是官方适配Spring Boot 3的分支,对应的spring-cloud-contract-wiremock最低兼容版本为4.0.0。修改pom.xml中的依赖配置:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-contract-wiremock</artifactId>
    <version>4.0.0</version>
    <scope>test</scope>
</dependency>

更推荐通过Spring Cloud依赖管理来统一版本,避免版本冲突:
在pom.xml中添加dependencyManagement节点:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2022.0.4</version> <!-- 可按需选择最新稳定版 -->
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

之后依赖部分无需指定版本,简化为:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-contract-wiremock</artifactId>
    <scope>test</scope>
</dependency>

方法2:临时添加Spring Legacy Utils依赖(不推荐长期使用)

如果暂时无法升级Spring Cloud版本,可通过引入spring-core-legacy依赖临时恢复SocketUtils类,但这只是权宜之计,长期仍建议升级适配版本:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core-legacy</artifactId>
    <version>6.0.0</version>
    <scope>test</scope>
</dependency>

额外优化

你的pom.xml中重复引入了spring-boot-starter-test,可删除其中一个,消除冗余依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:20:31