java - 尝试启动 VM 时 Azure ApplicationTokenCredentials 中出现评估错误 (NoSuchMethodError)

标签 java azure azure-virtual-machine

我有一个需要远程控制的 Azure VM。我正在以预期的方式使用 ApplicationTokenCredentials 进行身份验证;

ApplicationTokenCredentials 凭据 = new ApplicationTokenCredentials(client, 租户, key , AzureEnvironment.AZURE);

然后找到我的机器:

虚拟机 vm = Azure 。配置() .withLogLevel(LogLevel.NONE) .authenticate(凭证) .withSubscription(订阅) .virtualMachines() .getByResourceGroup(resourceGroup, machineName);

这本质上与官方文档所示的方法相同; https://learn.microsoft.com/en-us/azure/developer/java/sdk/java-sdk-manage-virtual-machines?view=azure-java-stable

这可以工作、验证并使用 VirtualMachine 对象设置我。我已经确认它就是它,并且它是我想要控制的正确机器。

但是,当我尝试使用 start() 方法启动它时,会发生这种情况:

Evaluation error (NoSuchMethodError) at com.microsoft.azure.credentials.ApplicationTokenCredentials.getToken (ApplicationTokenCredentials.java:138).

我的依赖树看起来不错。我正在使用来自 Maven Central 的 com.microsoft.azure 的最新版本(1.35.0)(仅此);

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure</artifactId>
        <version>1.35.0</version>
    </dependency>

当然,这是父依赖项,它会拉下一堆工件。不过,我的依赖树乍一看似乎很好:

+- com.microsoft.azure:azure:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-client-runtime:jar:1.7.0:compile
[INFO] |  |  \- com.microsoft.rest:client-runtime:jar:1.7.0:compile
[INFO] |  |     +- com.squareup.retrofit2:retrofit:jar:2.5.0:compile
[INFO] |  |     +- com.squareup.okhttp3:okhttp:jar:3.12.6:compile
[INFO] |  |     |  \- com.squareup.okio:okio:jar:1.15.0:compile
[INFO] |  |     +- com.squareup.okhttp3:logging- 
interceptor:jar:3.12.2:compile
[INFO] |  |     +- com.squareup.okhttp3:okhttp- 
urlconnection:jar:3.12.2:compile
[INFO] |  |     +- com.squareup.retrofit2:converter- 
jackson:jar:2.5.0:compile
[INFO] |  |     |  \- com.fasterxml.jackson.core:jackson- 
databind:jar:2.9.4:compile
[INFO] |  |     +- com.fasterxml.jackson.datatype:jackson-datatype- 
joda:jar:2.10.0:compile
[INFO] |  |     |  \- com.fasterxml.jackson.core:jackson- 
annotations:jar:2.10.0:compile
[INFO] |  |     \- com.squareup.retrofit2:adapter-rxjava:jar:2.6.2:compile
[INFO] |  +- com.microsoft.azure:azure-client- 
authentication:jar:1.7.0:compile
[INFO] |  |  \- com.microsoft.azure:azure-annotations:jar:1.10.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-resources:jar:1.35.0:compile
[INFO] |  |  \- io.reactivex:rxjava:jar:1.3.8:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-storage:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-network:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-graph-rbac:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-keyvault:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-batch:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt- 
trafficmanager:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-dns:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-redis:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-appservice:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-locks:jar:1.35.0:compile
[INFO] |  +- javax.xml.bind:jaxb-api:jar:2.3.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-eventhub:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-cdn:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-sql:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-         
containerinstance:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-         
containerregistry:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt- 
containerservice:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-cosmosdb:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-search:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-msi:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-monitor:jar:1.35.0:compile
[INFO] |  +- com.microsoft.azure:azure-mgmt-servicebus:jar:1.35.0:compile
[INFO] |  \- com.microsoft.azure:azure-mgmt-batchai:jar:1.35.0:compile
[INFO] +- com.microsoft.azure:azure-mgmt-compute:jar:1.35.0:compile
[INFO] |  \- com.google.code.gson:gson:jar:2.2.4:compile

至少我在这里没有看到任何突出的依赖冲突。我真的不知道如何继续这里。

最佳答案

我最终设置了一个仅包含虚拟机管理的测试项目,并发现可以处理相同的依赖项。

经过一番苦心比较两者之间的依赖关系,我发现了一个差异; com.microsoft.azure.adal4j 包的版本在我的测试项目上为 1.6.4,在我的生产应用程序上为 1.0.0。

我不知道我的生产应用程序如何最终得到旧版本,因为所有根 azure 依赖项都是相同的,但我将此依赖项添加到我的生产应用程序中,这解决了问题:

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>adal4j</artifactId>
        <version>1.6.4</version>
    </dependency>

关于java - 尝试启动 VM 时 Azure ApplicationTokenCredentials 中出现评估错误 (NoSuchMethodError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62460442/

相关文章:

java - 安装 Java 8 Update 20 后,64 位 Java 的行为就像 32 位 Java - 奇怪

java - Neo4j Spring Data 示例缺少注释 @Indexed

c# - Azure 表存储 sdk 1.6 Upsert 未插入

azure - 从 Azure VM 访问互联网无法正常工作

java - Maven:如何查询可执行类路径?

java - 为什么 Java HashMap 实现在调整大小时使用 transfer() 而不是 put()?

无需应用注册的 Azure AD 身份验证

Azure 数据工厂和 GraphDb

Azure Blob 高级存储与标准存储

Azure 流量管理器优先级、加权和性能