

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Wie löse ich Abhängigkeitskonflikte?
<a name="ts-faq-dep-conflict-resolution"></a>

Wenn Sie das verwenden AWS SDK für Kotlin, benötigt es bestimmte Abhängigkeiten AWS und Abhängigkeiten von Drittanbietern, damit es ordnungsgemäß funktioniert. Wenn diese Abhängigkeiten fehlen oder zur Laufzeit unerwartete Versionen vorliegen, werden möglicherweise Fehler wie `NoSuchMethodError` oder angezeigt`NoClassDefFoundError`. Diese Abhängigkeitsprobleme lassen sich normalerweise in zwei Gruppen einteilen:
+ SDK/Smithy-Abhängigkeitskonflikte
+ Konflikte mit Abhängigkeiten von Drittanbietern

Wenn Sie Ihre Kotlin-Anwendung erstellen, werden Sie wahrscheinlich Gradle verwenden, um Abhängigkeiten zu verwalten. Das Hinzufügen einer Abhängigkeit von einem SDK-Serviceclient zu Ihrem Projekt beinhaltet automatisch alle erforderlichen zugehörigen Abhängigkeiten. Wenn Ihre Anwendung jedoch andere Abhängigkeiten hat, können diese mit den vom SDK geforderten Abhängigkeiten kollidieren. Das SDK stützt sich beispielsweise auf OkHttp einen beliebten HTTP-Client, den Ihre Anwendung möglicherweise auch verwendet. Um Ihnen zu helfen, diese Konflikte zu erkennen, bietet Gradle eine praktische Aufgabe, die die Abhängigkeiten Ihres Projekts auflistet:

```
./gradlew dependencies
```

Wenn Sie auf Abhängigkeitskonflikte stoßen, müssen Sie möglicherweise Maßnahmen ergreifen. Sie können entweder eine bestimmte Version einer Abhängigkeit angeben oder Abhängigkeiten in einen lokalen Namespace übertragen. Die Auflösung von Gradle-Abhängigkeiten ist ein komplexes Thema, das in den folgenden Abschnitten des *Gradle-Benutzerhandbuchs* behandelt wird:
+ [Die Auflösung von Abhängigkeiten verstehen](https://docs.gradle.org/current/userguide/dependency_resolution.html)
+ [Abhängigkeitsbeschränkungen und Konfliktlösung](https://docs.gradle.org/current/userguide/dependency_constraints_conflicts.html)
+ [Abstimmung der Abhängigkeitsversionen](https://docs.gradle.org/current/userguide/dependency_version_alignment.html)

## Verwaltung von SDK- und Smithy-Abhängigkeiten in Ihrem Projekt
<a name="sdk-smithy-dep-conflicts"></a>

Wenn Sie das SDK verwenden, denken Sie daran, dass seine Module in der Regel von anderen SDK-Modulen mit übereinstimmenden Versionsnummern abhängen. `aws.sdk.kotlin:s3:1.2.3`Hängt beispielsweise von a ab`ws.sdk.kotlin:aws-http:1.2.3`, das von abhängt`aws.sdk.kotlin:aws-core:1.2.3`, und so weiter.

Die SDK-Module verwenden auch spezifische Smithy-Modulversionen. Die Versionen des Smithy-Moduls werden zwar nicht mit den SDK-Versionsnummern synchronisiert, müssen aber mit der erwarteten Version des SDK übereinstimmen. `aws.sdk.kotlin:s3:1.2.3`Könnte zum Beispiel davon abhängen`aws.smithy.kotlin:serde:1.1.1`, was davon abhängt`aws.smithy.kotlin:runtime-core:1.1.1`, und so weiter.

Um Abhängigkeitskonflikte zu vermeiden, aktualisieren Sie alle Ihre SDK-Abhängigkeiten zusammen und tun Sie dasselbe für alle expliziten Smithy-Abhängigkeiten. Erwägen Sie die Verwendung unseres [Gradle-Versionskatalogs](setup-create-project-file.md), um Versionen synchron zu halten und Rätselraten bei der Zuordnung zwischen SDK- und Smithy-Versionen zu vermeiden.

[Denken Sie daran, dass kleinere Versionsupdates in SDK/Smithy Modulen grundlegende Änderungen beinhalten können, wie in unseren Versionierungsrichtlinien beschrieben.](https://github.com/awslabs/aws-sdk-kotlin/blob/main/VERSIONING.md#versioning-policy) Lesen Sie beim Upgrade zwischen Nebenversionen sorgfältig die Changelogs und testen Sie das Laufzeitverhalten gründlich.

## Lösung von OkHttp Versionskonflikten in Ihrer Anwendung
<a name="okhttp-dep-conflicts"></a>

[OkHttp](https://square.github.io/okhttp/)ist eine beliebte HTTP-Engine, die das SDK standardmäßig auf JVM verwendet. Ihre Anwendung kann andere Abhängigkeiten oder Frameworks enthalten, die eine andere OkHttp Version beinhalten. Dies kann dazu führen, dass Klassen im `okhttp3` Namespace nicht richtig angezeigt werden, z. B. `okhttp/coroutines/ExecuteAsyncKt` oder`okhttp3/ConnectionListener`. `NoClassDefFoundError` In diesem Fall sollten Sie generell die neuere Version wählen, um Konflikte zu lösen. Um Ihnen zu helfen, die Ursachen dieser Konflikte aufzuspüren, bietet Gradle eine nützliche Aufgabe. Sie können alle Abhängigkeiten auflisten, indem Sie Folgendes ausführen:

```
./gradlew dependencies
```

Wenn das SDK beispielsweise von einer anderen Abhängigkeit wie Spring Boot abhängt, OkHttp `4.12.0` sollten Sie die verwenden`5.0.0-alpha.14 version`. OkHttp `5.0.0-alpha.14` Sie können dies mit einem `constraints` Block in Gradle tun:

```
dependencies {
    constraints {
        implementation("com.squareup.okhttp3:okhttp:4.12.0")
    }
}
```

Wenn Sie OkHttp 4.x verwenden müssen, bietet das SDK alternativ eine. `OkHttp4Engine` In der [Dokumentation](https://github.com/smithy-lang/smithy-kotlin/tree/main/runtime/protocol/http-client-engines/http-client-engine-okhttp4) finden Sie Informationen zur Konfiguration und Verwendung von Gradle `OkHttp4Engine` in Ihrem Code.