[英]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.您应该使用依赖约束来确保您只使用一个版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.