线程“ Thread-2”中的异常java.lang.NoSuchMethodError:kotlin.io.ByteStreamsKt.readBytes(Ljava / io / InputStream;)用于PACT测试

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

[尝试使用Java运行某些PACT测试,但不确定如何解决它时,我遇到此kotlin异常。

这里是错误:

线程“ Thread-2”中的异常java.lang.NoSuchMethodError:kotlin.io.ByteStreamsKt.readBytes(Ljava / io / InputStream;)[B

enter image description here

编辑

我已经更新了我的PACT依赖项以使用更多最新版本,但是仍然遇到相同的问题,但是仅当我将以下依赖项作为其一部分并且不确定原因时。

 <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.3.RELEASE</version>
</parent>

enter image description here

这是我当前的pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.hmhco</groupId>
<artifactId>update-catalog</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.3.RELEASE</version>
</parent>

<properties>
    <rest-assured.version>3.0.0</rest-assured.version>
    <json-schema-validator.version>3.3.0</json-schema-validator.version>
</properties>

<dependencies>
    <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>rest-assured</artifactId>
        <version>${rest-assured.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>json-schema-validator</artifactId>
        <version>${json-schema-validator.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>au.com.dius</groupId>
        <artifactId>pact-jvm-consumer-junit5</artifactId>
        <version>4.0.10</version>
    </dependency>
    <dependency>
        <groupId>au.com.dius</groupId>
        <artifactId>pact-jvm-provider-junit</artifactId>
        <version>4.0.10</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>au.com.dius</groupId>
            <artifactId>pact-jvm-provider-maven</artifactId>
            <version>4.0.10</version>
            <configuration>
                <pactDirectory>target/pacts</pactDirectory>
                <pactBrokerUrl>http://pact-broker-hmh.devel.hmheng-qe.brnp.internal/</pactBrokerUrl>
                <projectVersion>${project.version}</projectVersion>
                <trimSnapshot>true</trimSnapshot>
            </configuration>
        </plugin>
    </plugins>
</build>

这就是我在运行maven依赖树后寻找Kotlin时看到的。

enter image description here

enter image description here

可以找到完整的项目here

非常感谢。

java kotlin junit pact
1个回答
0
投票

您收到该错误的可能原因(我假设是因为您混合了Pact库的主要版本。

<pact.version>3.5.24</pact.version>
<pact-jvm-provider-maven.version>3.5.9</pact-jvm-provider-maven.version>
<pact-jvm-maven.version>3.5.24</pact-jvm-maven.version>
<pact.jvm.consumer.junit.version>4.0.10</pact.jvm.consumer.junit.version>

您具有3.5.9、3.5.24和4.0.10版本。您应该使用相同的主要版本。

版本3.5.x主要是用Kotlin编写的(可能是1.2.x版,而版本4.0.x是使用Kotlin 1.3.x编写的。

我不确定Sprinboot为什么会影响事物,但也许Spring依赖项还引入了Kotlin标准库的版本。

最好的做法是对所有Pact库使用4.0.10版本,然后运行Maven依赖树插件并检查正在使用的Kotlin标准库版本。

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