为什么我会收到此 NoClassDefFound 错误?

问题描述 投票:0回答:1

我正在尝试在 Spring 中创建合约(https://spring.io/projects/spring-cloud-contract)

这是我不断收到的错误:

测试错误:ContractVerifierTest.validate_shouldReturnPreviousAddress:19 » NoClassDefFound

这是导致问题的行:

// given:
MockMvcRequestSpecification request = given();

这是我的常规文件:

一揽子合同

导入 org.springframework.cloud.contract.spec.Contract


合约.make {

    要求 {
        方法“获取”
        url 值(消费者('/echo'), 生产者('/echo'))
    }
    回复 {
        状态 200
        标头{
            标头(
                    'Content-Type', value(consumer('text/plain;charset=ISO-8859-1'), Producer(regex('text/plain;charset=ISO-8859-1')))
            )
        }
        身体(
                “给我发点东西吧!”
        )
    }
    优先级 1
}

我已在我的 pom 文件中包含以下内容:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-contract-maven-plugin</artifactId>
            <version>1.2.2.RELEASE</version>
            <extensions>true</extensions>
            <configuration>
            <baseClassForTests>[baseClass link]</baseClassForTests>
            </configuration>
        </plugin>
    </plugins>
</build>

据我所知,导致此问题的线路是正确的。还有什么我可能会错过的吗?

编辑:

仔细检查后,这似乎是问题的真正原因:

java.lang.NoClassDefFoundError:io/restassured/internal/common/assertion/AssertParameter

maven spring-boot noclassdeffounderror
1个回答
0
投票

java.lang.NoClassDefFoundError

出现上述错误通常是由于 Spring Cloud 和 Spring Boot 版本不匹配或依赖项过时造成的。

Spring Cloud 版本与特定的 Spring Boot 版本相关。可以参考Spring Cloud文档中的下表:

发布火车 Spring Boot 兼容性

释放列车 启动版本
2021.0.x 又名 Jubilee 2.6.x、2.7.x(从2021.0.3开始)
2020.0.x 又名伊尔福德 2.4.x、2.5.x(2020.0.3开始)
霍克斯顿 2.2.x、2.3.x(从 SR5 开始)
格林威治 2.1.x
芬奇利 2.0.x
埃奇韦尔 1.5.x
达尔斯顿 1.5.x

注意:建议使用Spring开箱即用的

rest-assured
,以避免版本不匹配。

© www.soinside.com 2019 - 2024. All rights reserved.