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

使用用户托管标识从Azure函数发送Event Grid事件遇类找不到异常

问题:使用用户托管身份向Azure EventGrid发送数据时抛出ClassNotFoundException异常

尝试使用UserManagedIdentity Credential向Azure EventGrid发送数据时,抛出ClassNotFoundException: com.azure.core.util.tracing.TracerProvider异常。

相关代码

import com.azure.identity.ManagedIdentityCredentialBuilder;
import com.azure.messaging.eventgrid.EventGridEvent;
import com.azure.messaging.eventgrid.EventGridPublisherClient;
import com.azure.messaging.eventgrid.EventGridPublisherClientBuilder;
import com.azure.core.credential.TokenCredential;

TokenCredential managedIdentityCredentialUserAssigned = new ManagedIdentityCredentialBuilder().clientId(System.getenv("MANAGED_IDENTITY_CLIENT_ID")).build();
EventGridPublisherClient<EventGridEvent> eventGridEventClient = new EventGridPublisherClientBuilder()
     .endpoint(System.getenv("EVENTGRID_SYNC_TOPIC_ENDPOINT")).credential(managedIdentityCredentialUserAssigned).buildEventGridEventPublisherClient();

异常栈信息

Exception: ClassNotFoundException: com.azure.core.util.tracing.TracerProvider
Caused by: java.lang.NoClassDefFoundError: com/azure/core/util/tracing/TracerProvider
    at com.azure.messaging.eventgrid.EventGridPublisherClientBuilder.buildAsyncClient(EventGridPublisherClientBuilder.java:204)
    at com.azure.messaging.eventgrid.EventGridPublisherClientBuilder.buildClient(EventGridPublisherClientBuilder.java:232)
    at com.azure.messaging.eventgrid.EventGridPublisherClientBuilder.buildEventGridEventPublisherClient(EventGridPublisherClientBuilder.java:393)
    at com.cie.poc.managed.identity.function.service.ManagedIdentityEventGridService.sendEvent(ManagedIdentityEventGridService.java:39)
    at com.cie.poc.managed.identity.function.SaveDataToBlob.apply(SaveDataToBlob.java:56)
    at com.cie.poc.managed.identity.function.SaveDataToBlob.apply(SaveDataToBlob.java:22)
    at org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry$FunctionInvocationWrapper.invokeFunctionAndEnrichResultIfNecessary(SimpleFunctionRegistry.java:897)
    at org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry$FunctionInvocationWrapper.invokeFunction(SimpleFunctionRegistry.java:853)
    at org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry$FunctionInvocationWrapper.doApply(SimpleFunctionRegistry.java:708)
    at org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry$FunctionInvocationWrapper.apply(SimpleFunctionRegistry.java:551)
    at org.springframework.cloud.function.adapter.azure.FunctionInvoker.handleRequest(FunctionInvoker.java:129)
    at com.cie.poc.managed.identity.function.SaveDataToBlobHandler.run(SaveDataToBlobHandler.java:32)
    ... 18 more
Caused by: java.lang.ClassNotFoundException: com.azure.core.util.tracing.TracerProvider
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    ... 30 more

依赖配置(pom.xml)

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-messaging-eventgrid</artifactId>
    <version>4.18.0</version>
</dependency>
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
    <version>1.7.3</version>
</dependency>
<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-eventgrid</artifactId>
    <version>1.1.0</version>
</dependency>
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-core</artifactId>
    <version>1.35.0</version>
</dependency>

环境信息

  • Spring Boot版本:2.7.8
  • Java版本:11

解决方案

  • 移除冲突的旧版EventGrid依赖:com.microsoft.azure:azure-eventgrid:1.1.0是Azure EventGrid的旧版SDK,和新版com.azure:azure-messaging-eventgrid存在依赖冲突,直接删除该依赖。
  • 修正azure-core版本不匹配问题:azure-messaging-eventgrid:4.18.0要求的azure-core最低版本为1.47.0,当前手动指定的1.35.0版本过低。可以选择:
    1. 删除手动指定的azure-core依赖,让Maven自动根据azure-messaging-eventgrid的依赖关系引入正确版本;
    2. 手动将azure-core版本升级到1.47.0或更高(建议使用与azure-messaging-eventgrid兼容的最新稳定版)。
  • 可选:统一Azure SDK版本:使用Azure BOM(Bill of Materials)统一管理所有Azure SDK依赖的版本,避免版本不匹配问题,在pom.xml中添加:
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.azure</groupId>
                <artifactId>azure-sdk-bom</artifactId>
                <version>2024.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    添加后无需给单个Azure SDK依赖指定版本,BOM会自动引入兼容版本。

内容的提问来源于stack exchange,提问作者Nandishwar Garg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:33:17