我正在使用azure sdk(azure-storage-file-datalake,azure-core,azure-identity)将avro数据写入来自Kafka的azure datalake第二代(使用连接器),但我收到了如下非常奇怪的错误
2022-05-12 10:46:10错误jacksonVersion:506 -不支持软件包“jackson-annotations”的版本“2.9.4”(比最早支持的版本- 2.10.0更旧),请升级。
2022-05-12 10:46:10错误jacksonVersion:506 -不支持软件包“jackson-core”的版本“2.9.4”(比最早支持的版本- 2.10.0更旧),请升级。
2022-05-12 10:46:10错误jacksonVersion:506 -不支持软件包'jackson-databind'的版本'2.9.4'(比最早支持的版本- 2.10.0更旧),请升级。
java.lang.LinkageError:软件包版本:jackson-annotations=2.9.4,jackson-core=2.9.4,jackson-databind=2.9.4,jackson-dataformat-xml=未知,jackson-datatype-jsr 310 =未知,azure-core=1.28.0,版本冲突故障排除:https://aka.ms/azsdk/java/dependency/troubleshoot\n\tat com.Azure.内核.实现
我已经尝试排除Jackson依赖项并尝试显式添加,但仍然出现错误。
这件事请有人帮忙
第一个
3条答案
按热度按时间cczfrluj1#
作用域为“runtime”的依赖项不用于编译,而仅用于执行。此作用域的依赖项不会放在编译类路径上,因此可以删除运行时作用域。
然而,覆盖您自己不使用的可传递依赖版本的更好方法是使用依赖管理,如下所示:
ltqd579y2#
这是Azure-SDK的一个挑战(这里有一个类似的issue)。Azure-SDK依赖于Jackson。Jackson的具体版本取决于您使用的azure-sdk版本。
最新版本支持Jackson2.10-2.13。这意味着您可能对Jackson有其他依赖项,但SDK仍将工作。假设提取的Jackson版本是2.10-2.13。Azure-SDK与所有这些版本兼容。
如果您希望使用Jackson2.9(或者如果它是来自其他依赖项的依赖项),那么没有办法绕过它。您必须升级您的依赖项,以便它获取Jackson 2.10和更高版本。
在您的示例中,可能存在一些正在获取2.9.x系列的依赖项。
我会这么做:
1.基于所有非azure-sdk依赖项。确定要保留的Jackson版本。在pom.xml中显式添加此jackson依赖项
1.使用azure-sdk BOM
1.您不必指定排除。指定pom overrides中的版本其他依赖项版本
5f0d552i3#
主机环境中有那些2.9.4版本的Jacksonjar,它们在运行时加载并导致问题,我用更新版本的jar替换了它们,现在一切正常。(我们在主机上安装了Kafka客户端,它在内部kafka/libs中有那些jar)
已从-https://github.com/Azure/azure-sdk-for-java/issues/28902获得ans