You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java项目引入Azure Storage SDK遇Jackson版本依赖冲突问题

问题原因分析

你遇到的Jackson版本冲突本质是依赖版本优先级导致的混合版本运行:

  1. 你引入的azure-sdk-bom:1.2.14本身内置管理的Jackson核心模块(core、databind、jsr310)版本为2.12.6,Maven的依赖解析逻辑中,BOM声明的版本优先级高于你单独声明的依赖版本,所以即使你显式用了2.15.2,运行时还是会加载BOM指定的2.12.6版本。
  2. 你的项目中jackson-dataformat-xml是2.15.2版本,这个版本依赖的Jackson核心方法(比如IOContext.contentReference())在2.12.6中不存在,导致调用时抛出NoSuchMethodError。
解决方案

方案1:显式在DependencyManagement中锁定Jackson版本(推荐)

在dependencyManagement中直接声明所有Jackson核心模块的2.15.2版本,覆盖Azure BOM中的旧版本,确保所有依赖统一使用同一版本:

<dependencyManagement>
    <dependencies>
        <!-- 保留Azure SDK BOM引入 -->
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-sdk-bom</artifactId>
            <version>1.2.14</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- 显式指定Jackson所有核心模块版本,覆盖BOM -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.15.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.15.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
            <version>2.15.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
            <version>2.15.2</version>
        </dependency>
    </dependencies>
</dependencyManagement>

方案2:升级Azure SDK BOM到兼容Jackson 2.15.x的版本

azure-sdk-bom:1.2.14是较旧的版本,后续的BOM版本已经跟进了Jackson的新版本。升级到最新稳定版(比如1.14.0),其内置的Jackson版本会与你使用的2.15.2匹配,自动消除冲突:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-sdk-bom</artifactId>
    <version>1.14.0</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

方案3:排除Azure依赖中的旧版本Jackson(不推荐)

在azure-storage-blob依赖中排除传递引入的旧版本Jackson模块,但这种方式需要逐个排查所有可能引入旧版本的依赖,容易遗漏:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-storage-blob</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
        </exclusion>
    </exclusions>
</dependency>
验证方法

修改配置后,执行mvn dependency:tree命令,检查输出中所有Jackson相关模块的版本是否统一为2.15.2,确认无2.12.6版本残留即可。

内容的提问来源于stack exchange,提问作者Piotr Kwiatkowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 06:02:26