

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Como faço para resolver conflitos de dependência?
<a name="ts-faq-dep-conflict-resolution"></a>

Quando você usa o AWS SDK para Kotlin, ele precisa de determinadas dependências AWS e de terceiros para funcionar corretamente. Se essas dependências estiverem ausentes ou forem versões inesperadas em tempo de execução, você poderá ver erros como `NoSuchMethodError` ou`NoClassDefFoundError`. Esses problemas de dependência geralmente se dividem em dois grupos:
+ Conflitos de dependência do SDK/Smithy
+ Conflitos de dependência de terceiros

Ao criar seu aplicativo Kotlin, você provavelmente usará o Gradle para gerenciar dependências. Adicionar uma dependência em um cliente de serviço do SDK ao seu projeto inclui automaticamente todas as dependências relacionadas necessárias. No entanto, se seu aplicativo tiver outras dependências, elas poderão entrar em conflito com as exigidas pelo SDK. Por exemplo, o SDK depende OkHttp de um cliente HTTP popular que seu aplicativo também pode usar. Para ajudar você a identificar esses conflitos, o Gradle oferece uma tarefa útil que lista as dependências do seu projeto:

```
./gradlew dependencies
```

Quando você encontra conflitos de dependência, talvez seja necessário agir. Você pode especificar uma versão específica de uma dependência ou sombrear dependências em um namespace local. A resolução de dependências do Gradle é um tópico complexo discutido nas seções a seguir do Manual do usuário do *Gradle:*
+ [Entendendo a resolução de dependências](https://docs.gradle.org/current/userguide/dependency_resolution.html)
+ [Restrições de dependência e resolução de conflitos](https://docs.gradle.org/current/userguide/dependency_constraints_conflicts.html)
+ [Alinhando versões de dependência](https://docs.gradle.org/current/userguide/dependency_version_alignment.html)

## Gerenciando dependências do SDK e do Smithy em seu projeto
<a name="sdk-smithy-dep-conflicts"></a>

Ao usar o SDK, lembre-se de que seus módulos normalmente dependem de outros módulos do SDK com números de versão correspondentes. Por exemplo, `aws.sdk.kotlin:s3:1.2.3` depende de a`ws.sdk.kotlin:aws-http:1.2.3`, que depende de`aws.sdk.kotlin:aws-core:1.2.3`, e assim por diante.

Os módulos do SDK também usam versões específicas do módulo Smithy. Embora as versões do módulo Smithy não sejam sincronizadas com os números de versão do SDK, elas devem corresponder à versão esperada do SDK. Por exemplo, `aws.sdk.kotlin:s3:1.2.3` pode depender de`aws.smithy.kotlin:serde:1.1.1`, o que depende `aws.smithy.kotlin:runtime-core:1.1.1` e assim por diante.

Para evitar conflitos de dependência, atualize todas as dependências do SDK em conjunto e faça o mesmo com qualquer dependência explícita do Smithy. Considere usar nosso [catálogo de versões do Gradle](setup-create-project-file.md) para manter as versões sincronizadas e eliminar suposições no mapeamento entre as versões do SDK e do Smithy.

Lembre-se de que pequenas atualizações de versão nos SDK/Smithy módulos podem incluir alterações significativas, conforme descrito em nossa política de controle de [versão](https://github.com/awslabs/aws-sdk-kotlin/blob/main/VERSIONING.md#versioning-policy). Ao atualizar entre versões secundárias, analise cuidadosamente os registros de alterações e teste minuciosamente o comportamento do tempo de execução.

## Resolvendo conflitos de OkHttp versão em seu aplicativo
<a name="okhttp-dep-conflicts"></a>

[OkHttp](https://square.github.io/okhttp/)é um mecanismo HTTP popular que o SDK usa por padrão na JVM. Seu aplicativo pode incluir outras dependências ou estruturas que trazem uma versão diferente OkHttp . Isso pode causar um `NoClassDefFoundError` para classes no `okhttp3` namespace, como `okhttp/coroutines/ExecuteAsyncKt` ou. `okhttp3/ConnectionListener` Quando isso acontece, você geralmente deve escolher a versão mais recente para resolver conflitos. Para ajudar você a rastrear as fontes desses conflitos, o Gradle oferece uma tarefa útil. Você pode listar todas as dependências executando:

```
./gradlew dependencies
```

Por exemplo, se o SDK depende de OkHttp `5.0.0-alpha.14` e outra dependência, como Spring Boot, depende OkHttp `4.12.0`, então você deve usar o. `5.0.0-alpha.14 version` Você pode fazer isso com um `constraints` bloco no Gradle:

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

Como alternativa, se você precisar usar o OkHttp 4.x, o SDK fornecerá um. `OkHttp4Engine` Consulte a [documentação](https://github.com/smithy-lang/smithy-kotlin/tree/main/runtime/protocol/http-client-engines/http-client-engine-okhttp4) para obter informações sobre como configurar o Gradle e usá-lo `OkHttp4Engine` em seu código.