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

升级Azure SDK for Java至12.21.1时遇ContextView类缺失错误求助

问题描述

我正将Azure SDK for Java升级至12.21.1版本,当前使用的Spring Boot版本为2.1.6,通过Gradle引入依赖:

implementation 'com.azure:azure-storage-blob:12.21.1'

使用以下代码创建BlobServiceClient:

String accountUrl = "https://" + accountName + ".blob.core.windows.net";
StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(accountName, accountKey);

try{
    BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().credential(sharedKeyCredential).endpoint(accountUrl).buildClient();
}

但运行时抛出如下错误:

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: reactor/util/context/ContextView] with root cause

java.lang.ClassNotFoundException: reactor.util.context.ContextView
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na]
BuiltinClassLoader.java:581
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
ClassLoaders.java:178
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]
ClassLoader.java:522
    at com.azure.core.http.policy.HttpPolicyProviders.addAfterRetryPolicies(HttpPolicyProviders.java:52) ~[azure-core-1.37.0.jar:1.37.0]
HttpPolicyProviders.java:52
    at com.azure.storage.blob.implementation.util.BuilderHelper.buildPipeline(BuilderHelper.java:128) ~[azure-storage-blob-12.21.1.jar:12.21.1]
BuilderHelper.java:128
    at com.azure.storage.blob.BlobServiceClientBuilder.buildAsyncClient(BlobServiceClientBuilder.java:135) ~[azure-storage-blob-12.21.1.jar:12.21.1]
BlobServiceClientBuilder.java:135
    at com.azure.storage.blob.BlobServiceClientBuilder.buildClient(BlobServiceClientBuilder.java:114) ~[azure-storage-blob-12.21.1.jar:12.21.1]
解决方案

这个错误是因为Spring Boot 2.1.6依赖的Reactor版本过低,Azure SDK 12.21.1依赖的azure-core 1.37.0需要Reactor 3.3.0及以上版本(ContextView类是Reactor 3.3.0之后才新增的)。

有两种可行的解决方式:

方式一:升级Spring Boot版本

Spring Boot 2.1.x默认依赖的Reactor版本为3.2.x,不满足Azure SDK的要求。优先建议将Spring Boot升级到2.3.x及以上的稳定版本(比如2.7.x长期支持版),升级后会自动引入符合要求的Reactor依赖,彻底解决版本冲突问题。

方式二:手动指定Reactor依赖版本

如果暂时无法升级Spring Boot,可以在Gradle配置中手动指定更高版本的Reactor依赖,覆盖Spring Boot的默认版本:

dependencies {
    // 保留原有依赖
    implementation 'com.azure:azure-storage-blob:12.21.1'
    // 手动指定符合要求的Reactor版本
    implementation 'io.projectreactor:reactor-core:3.4.30'
}

注意:手动指定版本可能引发其他潜在的依赖冲突风险,因此优先推荐第一种方式。


内容的提问来源于stack exchange,提问作者Yatharth Mishra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:27:35