简体   繁体   English

Gradle 将通过 CLI 而不是 Intellij(实例方法不存在)

[英]Gradle will pass in CLI and not Intellij (Instance method doesn't exist)

I run tests on CI and local and they pass with gradle test .我在 CI 和本地运行测试,它们通过gradle test通过。 When I run via Intellij or try to debug, they fail and I get a failure on this call:当我通过 Intellij 运行或尝试调试时,它们会失败,并且我在此调用中失败:

LogicalType type = schema.getLogicalType(); This is actually an external function call in one of our dependencies.这实际上是我们的依赖项之一中的外部 function 调用。

java.lang.NoSuchMethodError: 'org.apache.avro.LogicalType org.apache.avro.Schema.getLogicalType()' java.lang.NoSuchMethodError: 'org.apache.avro.LogicalType org.apache.avro.Schema.getLogicalType

I'm not sure how to get around this, is this conflicting jars on the classpath?我不知道如何解决这个问题,这是否与类路径上的 jars 冲突?

Dependency graph on Avro Avro 上的依赖关系图

❯ gradle dependencies | grep -i avro
|    |    |    |    +--- org.apache.avro:avro:1.7.7 -> 1.9.1
|    |    |    |    |    |    |    +--- org.apache.avro:avro:1.7.7 -> 1.9.1 (*)
|    |    |    |    |    |    +--- org.apache.avro:avro:1.7.7 -> 1.9.1 (*)
|    |    |    +--- org.apache.avro:avro:1.7.7 -> 1.9.1 (*)
|    \--- org.apache.avro:avro:1.9.1 (*)
|    +--- org.apache.avro:avro:1.9.1 (*)
|    \--- org.apache.avro:avro:1.9.0 -> 1.9.1 (*)
+--- io.confluent:kafka-avro-serializer:5.3.1
|    +--- org.apache.avro:avro:1.8.1 -> 1.9.1 (*)
|    |    +--- org.apache.avro:avro:1.8.1 -> 1.9.1 (*)
+--- io.confluent:kafka-streams-avro-serde:5.3.1
|    +--- io.confluent:kafka-avro-serializer:5.3.1 (*)
|    +--- org.apache.avro:avro:1.8.1 -> 1.9.1 (*)
     \--- org.apache.avro:avro:1.9.1 (*)
+--- io.confluent:kafka-avro-serializer:5.3.1 (n)
+--- io.confluent:kafka-streams-avro-serde:5.3.1 (n)
|    |    |    |    |    |    |    |    +--- org.apache.avro:avro:1.7.7 -> 1.9.1
|    |    |    |    |    |    |    +--- org.apache.avro:avro:1.7.7 -> 1.9.1 (*)
|    |    |    |    |    |    +--- org.apache.avro:avro:1.7.7 -> 1.9.1 (*)
|    |    |    +--- org.apache.avro:avro:1.7.7 -> 1.9.1 (*)
|    |    +--- org.apache.avro:avro:1.9.1 (*)
|    +--- io.confluent:kafka-avro-serializer:5.3.1
|    |    +--- org.apache.avro:avro:1.8.1 -> 1.9.1 (*)
|    |    |    +--- org.apache.avro:avro:1.8.1 -> 1.9.1 (*)
|    |    +--- org.apache.avro:avro:1.9.0 -> 1.9.1 (*)
|    |    |    +--- org.apache.avro:avro:1.9.0 -> 1.9.1 (*)
|    |    |         \--- org.apache.avro:avro:1.9.1 (*)
|    +--- io.confluent:kafka-streams-avro-serde:5.3.1
|    |    +--- io.confluent:kafka-avro-serializer:5.3.1 (*)
|    |    +--- org.apache.avro:avro:1.8.1 -> 1.9.1 (*)
|    +--- org.apache.avro:avro:1.9.1 (*)
|    +--- io.confluent:kafka-avro-serializer:5.3.2 -> 5.3.1 (*)
+--- io.confluent:kafka-avro-serializer:5.3.1 (*)
+--- io.confluent:kafka-streams-avro-serde:5.3.1 (*)
|    |    |    |    +--- org.apache.avro:avro:1.7.7 -> 1.9.1
|    |    |    |    |    |    |    +--- org.apache.avro:avro:1.7.7 -> 1.9.1 (*)
|    |    |    |    |    |    +--- org.apache.avro:avro:1.7.7 -> 1.9.1 (*)
|    |    |    +--- org.apache.avro:avro:1.7.7 -> 1.9.1 (*)
|    \--- org.apache.avro:avro:1.9.1 (*)
|    +--- org.apache.avro:avro:1.9.1 (*)
|    \--- org.apache.avro:avro:1.9.0 -> 1.9.1 (*)
+--- io.confluent:kafka-avro-serializer:5.3.1
|    +--- org.apache.avro:avro:1.8.1 -> 1.9.1 (*)
|    |    +--- org.apache.avro:avro:1.8.1 -> 1.9.1 (*)
+--- io.confluent:kafka-streams-avro-serde:5.3.1
|    +--- io.confluent:kafka-avro-serializer:5.3.1 (*)
|    +--- org.apache.avro:avro:1.8.1 -> 1.9.1 (*)
|    \--- org.apache.avro:avro:1.9.1 (*)
|    |    |    |    |    |    |    |    +--- org.apache.avro:avro:1.7.7 -> 1.9.1
|    |    |    |    |    |    |    +--- org.apache.avro:avro:1.7.7 -> 1.9.1 (*)
|    |    |    |    |    |    +--- org.apache.avro:avro:1.7.7 -> 1.9.1 (*)
|    |    |    +--- org.apache.avro:avro:1.7.7 -> 1.9.1 (*)
|    |    +--- org.apache.avro:avro:1.9.1 (*)
|    +--- io.confluent:kafka-avro-serializer:5.3.1
|    |    +--- org.apache.avro:avro:1.8.1 -> 1.9.1 (*)
|    |    |    +--- org.apache.avro:avro:1.8.1 -> 1.9.1 (*)
|    |    +--- org.apache.avro:avro:1.9.0 -> 1.9.1 (*)
|    |    |    +--- org.apache.avro:avro:1.9.0 -> 1.9.1 (*)
|    |    |         \--- org.apache.avro:avro:1.9.1 (*)
|    +--- io.confluent:kafka-streams-avro-serde:5.3.1
|    |    +--- io.confluent:kafka-avro-serializer:5.3.1 (*)
|    |    +--- org.apache.avro:avro:1.8.1 -> 1.9.1 (*)
|    +--- org.apache.avro:avro:1.9.1 (*)
|    +--- io.confluent:kafka-avro-serializer:5.3.2 -> 5.3.1 (*)
+--- io.confluent:kafka-avro-serializer:5.3.1 (*)
+--- io.confluent:kafka-streams-avro-serde:5.3.1 (*)

It look like you have two different versions of Avro on classpath.看起来您在类路径上有两个不同版本的 Avro。 Try to list dependencies with Gradle (see documentation ) - you may see the problem there.尝试使用 Gradle 列出依赖项(请参阅文档) - 您可能会在那里看到问题。

Edit:编辑:

It seems your app is indirectly dependent on Avro 1.7.7, 1.8.1, 1.9.0 and 1.9.1.您的应用似乎间接依赖于 Avro 1.7.7、1.8.1、1.9.0 和 1.9.1。

You should use dependency constraints to make sure your're using only one version.您应该使用依赖约束来确保您只使用一个版本。

See here for details.有关详细信息,请参见此处

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM