Todos os produtos
Search
Central de documentação

Tablestore:O que devo fazer se ocorrerem conflitos de biblioteca PB ao usar o Tablestore SDK for Java?

Última atualização: Jul 03, 2026

Esse conflito ocorre quando as versões de protobuf-java ou httpasyncclient incluídas no Tablestore SDK for Java entram em conflito com versões importadas por outras dependências do seu projeto Maven. Use o classificador jar-with-dependencies para resolver o problema.

Nota

Para diagnosticar o conflito, execute mvn dependency:tree no seu repositório e verifique se há múltiplas versões de protobuf-java, httpasyncclient ou tablestore na saída.

Descrição do problema

A seguinte exceção ocorre ao usar o Tablestore SDK for Java:

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

Causa

O Tablestore SDK for Java depende de protobuf-java V2.4.1 e httpasyncclient V4.0.2. Se o seu projeto — ou qualquer biblioteca da qual ele depende — também importar versões diferentes desses artefatos, o Maven carregará definições de classe conflitantes em tempo de execução, acionando a exceção acima.

Solução

Utilize o classificador jar-with-dependencies do artefato tablestore. Essa variante usa a realocação de pacotes para incluir protobuf-java e httpasyncclient em um namespace de pacote renomeado, de modo que não entrem mais em conflito com nenhuma outra versão dessas bibliotecas no classpath.

Adicione o seguinte ao seu pom.xml:

Nota

O classificador jar-with-dependencies inclui protobuf-java e httpasyncclient por meio de realocação de pacotes, eliminando a dependência externa de ambas as bibliotecas.

<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>