[尝试使用Java运行某些PACT测试,但不确定如何解决它时,我遇到此kotlin异常。
这里是错误:
线程“ Thread-2”中的异常java.lang.NoSuchMethodError:kotlin.io.ByteStreamsKt.readBytes(Ljava / io / InputStream;)[B
编辑
我已经更新了我的PACT依赖项以使用更多最新版本,但是仍然遇到相同的问题,但是仅当我将以下依赖项作为其一部分并且不确定原因时。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
这是我当前的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时看到的。
可以找到完整的项目here。
非常感谢。
您收到该错误的可能原因(我假设是因为您混合了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标准库版本。