

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Comment résoudre les conflits de dépendance ?
<a name="ts-faq-dep-conflict-resolution"></a>

Lorsque vous utilisez le AWS SDK pour Kotlin, il a besoin de certaines dépendances AWS et de dépendances tierces pour fonctionner correctement. Si ces dépendances sont absentes ou s'il s'agit de versions inattendues au moment de l'exécution, des erreurs telles que `NoSuchMethodError` ou peuvent s'afficher`NoClassDefFoundError`. Ces problèmes de dépendance se répartissent généralement en deux groupes :
+ Conflits de dépendance entre SDK/Smithy
+ Conflits liés à la dépendance

Lorsque vous créez votre application Kotlin, vous utiliserez probablement Gradle pour gérer les dépendances. L'ajout d'une dépendance à un client de service SDK à votre projet inclut automatiquement toutes les dépendances connexes nécessaires. Toutefois, si votre application possède d'autres dépendances, elles peuvent entrer en conflit avec celles requises par le SDK. Par exemple, le SDK s'appuie sur OkHttp un client HTTP populaire que votre application peut également utiliser. Pour vous aider à détecter ces conflits, Gradle propose une tâche pratique qui répertorie les dépendances de votre projet :

```
./gradlew dependencies
```

Lorsque vous rencontrez des conflits de dépendance, vous devrez peut-être prendre des mesures. Vous pouvez soit spécifier une version particulière d'une dépendance, soit masquer les dépendances dans un espace de noms local. La résolution des dépendances de Gradle est un sujet complexe qui est abordé dans les sections suivantes du manuel d'*utilisation de Gradle* :
+ [Comprendre la résolution des dépendances](https://docs.gradle.org/current/userguide/dependency_resolution.html)
+ [Contraintes de dépendance et résolution des conflits](https://docs.gradle.org/current/userguide/dependency_constraints_conflicts.html)
+ [Alignement des versions de dépendance](https://docs.gradle.org/current/userguide/dependency_version_alignment.html)

## Gestion des dépendances du SDK et de Smithy dans votre projet
<a name="sdk-smithy-dep-conflicts"></a>

Lorsque vous utilisez le SDK, gardez à l'esprit que ses modules dépendent généralement d'autres modules SDK dont les numéros de version correspondent. Par exemple, `aws.sdk.kotlin:s3:1.2.3` dépend de a`ws.sdk.kotlin:aws-http:1.2.3`, qui dépend de`aws.sdk.kotlin:aws-core:1.2.3`, et ainsi de suite.

Les modules du SDK utilisent également des versions spécifiques des modules Smithy. Bien que les versions du module Smithy ne soient pas synchronisées avec les numéros de version du SDK, elles doivent correspondre à la version attendue du SDK. Par exemple, `aws.sdk.kotlin:s3:1.2.3` peut dépendre de`aws.smithy.kotlin:serde:1.1.1`, qui dépend de`aws.smithy.kotlin:runtime-core:1.1.1`, etc.

Pour éviter les conflits de dépendances, mettez à niveau toutes les dépendances de votre SDK ensemble, et faites de même pour toutes les dépendances explicites de Smithy. Envisagez d'utiliser notre [catalogue de versions Gradle](setup-create-project-file.md) pour synchroniser les versions et éliminer les incertitudes lors du mappage entre les versions du SDK et de Smithy.

N'oubliez pas que les mises à jour mineures SDK/Smithy des modules peuvent inclure des modifications majeures, comme indiqué dans notre [politique de gestion des versions](https://github.com/awslabs/aws-sdk-kotlin/blob/main/VERSIONING.md#versioning-policy). Lorsque vous effectuez une mise à niveau entre des versions mineures, examinez attentivement les journaux des modifications et testez soigneusement le comportement d'exécution.

## Résolution des conflits de OkHttp version dans votre application
<a name="okhttp-dep-conflicts"></a>

[OkHttp](https://square.github.io/okhttp/)est un moteur HTTP populaire que le SDK utilise par défaut sur JVM. Votre application peut inclure d'autres dépendances ou frameworks qui introduisent une OkHttp version différente. Cela peut provoquer un `NoClassDefFoundError` for dans l'espace de `okhttp3` noms, tel que `okhttp/coroutines/ExecuteAsyncKt` ou`okhttp3/ConnectionListener`. Dans ce cas, vous devez généralement choisir la version la plus récente pour résoudre les conflits. Pour vous aider à retracer les sources de ces conflits, Gradle propose une tâche utile. Vous pouvez répertorier toutes les dépendances en exécutant :

```
./gradlew dependencies
```

Par exemple, si le SDK dépend de OkHttp `5.0.0-alpha.14` et qu'une autre dépendance telle que Spring Boot en dépend OkHttp `4.12.0`, vous devez utiliser le`5.0.0-alpha.14 version`. Vous pouvez le faire avec un `constraints` bloc dans Gradle :

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

Sinon, si vous devez utiliser OkHttp 4.x, le SDK fournit un. `OkHttp4Engine` Consultez la [documentation](https://github.com/smithy-lang/smithy-kotlin/tree/main/runtime/protocol/http-client-engines/http-client-engine-okhttp4) pour savoir comment configurer Gradle et l'utiliser `OkHttp4Engine` dans votre code.