繁体   English   中英

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

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

我在 CI 和本地运行测试,它们通过gradle test通过。 当我通过 Intellij 运行或尝试调试时,它们会失败,并且我在此调用中失败:

LogicalType type = schema.getLogicalType(); 这实际上是我们的依赖项之一中的外部 function 调用。

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

我不知道如何解决这个问题,这是否与类路径上的 jars 冲突?

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 (*)

看起来您在类路径上有两个不同版本的 Avro。 尝试使用 Gradle 列出依赖项(请参阅文档) - 您可能会在那里看到问题。

编辑:

您的应用似乎间接依赖于 Avro 1.7.7、1.8.1、1.9.0 和 1.9.1。

您应该使用依赖约束来确保您只使用一个版本。

有关详细信息,请参见此处

暂无
暂无

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

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