Tous les produits
Search
Centre de documentation

Tablestore:Que faire en cas de conflits de bibliothèques PB lors de l'utilisation du SDK Tablestore pour Java ?

Dernière mise à jour :Aug 18, 2026

Ce conflit survient lorsque les versions de protobuf-java ou httpasyncclient incluses dans le SDK Tablestore pour Java entrent en collision avec les versions importées par d'autres dépendances de votre projet Maven. Utilisez le classifieur jar-with-dependencies pour résoudre ce problème.

Remarque

Pour diagnostiquer le conflit, exécutez mvn dependency:tree dans votre référentiel et recherchez plusieurs versions de protobuf-java, httpasyncclient ou tablestore dans la sortie.

Description du problème

L'exception suivante se produit lors de l'utilisation du SDK Tablestore pour Java :

Caused by: java.lang.UnsupportedOperationException: This is supposed to be overridden by subclassed
        at com.google.protobuf.GeneratedMessage.getUnknownFields(GeneratedMessage.java:225) 

Cause

Le SDK Tablestore pour Java dépend de protobuf-java V2.4.1 et httpasyncclient V4.0.2. Si votre projet — ou toute bibliothèque dont il dépend — importe également des versions différentes de ces artefacts, Maven charge des définitions de classes conflictuelles au moment de l'exécution, ce qui déclenche l'exception ci-dessus.

Solution

Basculez vers le classifieur jar-with-dependencies de l'artefact tablestore. Cette variante utilise la relocation de package pour regrouper protobuf-java et httpasyncclient sous un espace de noms renommé, afin qu'ils n'entrent plus en conflit avec d'autres versions de ces bibliothèques sur le classpath.

Ajoutez les éléments suivants à votre fichier pom.xml :

Remarque

Le classifieur jar-with-dependencies regroupe protobuf-java et httpasyncclient via la relocation de package, supprimant ainsi la dépendance externe envers ces deux bibliothèques.

<dependency>
    <groupId>com.aliyun.openservices</groupId>
    <artifactId>tablestore</artifactId>
    <version>Your current version</version>
    <classifier>jar-with-dependencies</classifier>
    <exclusions>
        <exclusion>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpasyncclient</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <!-- For example, the following libraries indirectly depend on Tablestore SDKs -->
    <groupId>com.aliyun.xxxxxxx</groupId>
    <artifactId>yyyyyy</artifactId>
    <version>zzzzzzz</version>
    <classifier>jar-with-dependencies</classifier>
    <exclusions>
        <!-- Remove the indirect dependency on the tablestore library -->
        <exclusion>
            <groupId>com.aliyun.openservices</groupId>
            <artifactId>tablestore</artifactId>
        </exclusion>
    </exclusions>
</dependency>