Ошибка оценки (NoSuchMethodError) в Azure ApplicationTokenCredentials при попытке запустить виртуальную машину - PullRequest
0 голосов
/ 19 июня 2020

У меня есть Azure ВМ, которой мне нужно удаленно управлять. Я аутентифицируюсь с помощью ApplicationTokenCredentials ожидаемым образом;

ApplicationTokenCredentials credentials = new ApplicationTokenCredentials(client, tenant, key, AzureEnvironment.AZURE);

Затем поиск моей машины:

VirtualMachine vm = Azure .configure() .withLogLevel(LogLevel.NONE) .authenticate(credentials) .withSubscription(subscription) .virtualMachines() .getByResourceGroup(resourceGroup, machineName);

По сути, это тот же подход, что и в официальной документации; https://docs.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).

Мое дерево зависимостей выглядит нормально. Я использую последнюю версию (1.35.0) com.microsoft. azure (и только ее) от maven central;

    <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

По крайней мере, я не вижу здесь ничего, что выделялось бы как конфликт зависимостей. Я действительно понятия не имею, как действовать здесь.

1 Ответ

0 голосов
/ 19 июня 2020

Я закончил настройку тестового проекта только с управлением виртуальной машиной и обнаружил, что он работает с теми же зависимостями.

После тщательного сравнения зависимостей между ними я обнаружил одно несоответствие; версия пакета com.microsoft. azure .adal4j была 1.6.4 в моем тестовом проекте и 1.0.0 в моем производственном приложении.

Я понятия не имею, как мое производственное приложение оказалось с более старой версией этого, поскольку все root azure зависимости идентичны, но я добавил эту зависимость в свое производственное приложение, что устранило проблему:

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