尝试使用 Spring Boot 连接到 Azure 服务总线队列时出现 NoSuchMethodError

问题描述 投票:0回答:1

我正在开发一个 Spring Boot 应用程序,它将从 Azure 服务总线队列中使用。我已按照 use-the-spring-cloud-azure-service-bus-starter 中的说明进行操作,但是当我尝试启动应用程序时,我在下面的日志中看到以下内容。

我在 application.properties 文件中设置了以下属性:

spring.cloud.azure.servicebus.namespace
spring.cloud.azure.servicebus.entity-name
spring.cloud.azure.servicebus.entity-type

我正在使用 Java 17,这是 Spring Boot 和 Azure 依赖项的最新版本,并且我已经执行了:

az login 

在我当地的环境中成功。

根据上面引用的文件,这就是我需要做的。有人对我可能遗漏的内容或我做错的事情有任何想法吗?

2024-04-01T12:34:38.528-04:00  INFO 34956 --- [ctor-executor-1] c.a.i.ChainedTokenCredential             : Azure Identity => Attempted credential EnvironmentCredential is unavailable.
2024-04-01T12:34:38.529-04:00  INFO 34956 --- [ctor-executor-1] c.a.i.ChainedTokenCredential             : Azure Identity => Attempted credential WorkloadIdentityCredential is unavailable.
2024-04-01T12:34:38.543-04:00  WARN 34956 --- [ctor-executor-1] r.c.Exceptions                           : throwIfFatal detected a jvm fatal exception, which is thrown and logged below:

java.lang.NoSuchMethodError: 'com.microsoft.aad.msal4j.AbstractClientApplicationBase$Builder com.microsoft.aad.msal4j.ConfidentialClientApplication$Builder.logPii(boolean)'
        at com.azure.identity.implementation.IdentityClientBase.getManagedIdentityConfidentialClient(IdentityClientBase.java:393) ~[azure-identity-1.11.2.jar:1.11.2]
        at com.azure.identity.implementation.IdentityClient.lambda$getManagedIdentityConfidentialClientApplication$5(IdentityClient.java:141) ~[azure-identity-1.11.2.jar:1.11.2]
        at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:45) ~[reactor-core-3.6.3.jar:3.6.3]
...

我尝试将凭据设置为环境变量,但抛出了相同的异常。

我希望成功连接到 ASB 队列并消耗消息。

java spring-boot azureservicebus
1个回答
0
投票

NoSuchMethodError 表示目标库中不存在该方法。

通常,这是由于库版本之间不兼容,特别是与 Azure Identity SDK (azure-identity) 和 MSAL 不兼容。

确保您使用的是 azure-identity、spring-cloud-azure-servicebus-starter 和其他相关库的兼容版本。

© www.soinside.com 2019 - 2024. All rights reserved.