赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 表格存储
  4. 服务支持
  5. 常见问题
  6. APISDK
  7. 使用Java SDK时出现PB库冲突

使用Java SDK时出现PB库冲突

  • APISDK
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

当使用表格存储Java SDK出现PB库冲突时,您需要在Maven项目的pom.xml文件中使用jar-with-dependencies版本的tablestore库,并在tablestore库中去除对protobuf-java和httpasyncclient的依赖,以及确认tablestore库本身是否出现库冲突。

说明

如何初步确认是否有PB库、tablestore库冲突?

在您的仓库中,可以通过mvn dependency:tree打印依赖树,在依赖树中查找protobuf-java、httpasyncclient和tablestore库是否有不同版本的依赖。

现象

使用Java SDK时出现如下异常:

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

原因

表格存储Java SDK依赖2.4.1版本的protobuf-java和4.0.2版本的httpasyncclient,容易与您的应用程序中自带的相同库冲突;同时如果您依赖的其他库间接依赖了tablestore库,也容易与您应用程序直接依赖的tablestore库冲突。

解决方案

在Maven项目中的pom.xml中添加如下依赖即可。

说明

classifier为jar-with-dependencies,它将依赖的protobuf-java和httpasyncclient都通过rename package的方式打包进去,去除了对protobuf-java和httpasyncclient的依赖。

<dependency>
    <groupId>com.aliyun.openservices</groupId>
    <artifactId>tablestore</artifactId>
    <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>
    <!-- 假设以下为间接依赖tablestore SDK的库 -->
    <groupId>com.aliyun.xxxxxxx</groupId>
    <artifactId>yyyyyy</artifactId>
    <version>zzzzzzz</version>
    <classifier>jar-with-dependencies</classifier>
    <exclusions>
        <!-- 去除对tablestore库的间接依赖 -->
        <exclusion>
            <groupId>com.aliyun.openservices</groupId>
            <artifactId>tablestore</artifactId>
        </exclusion>
    </exclusions>
</dependency>
相关文章

使用Java SDK访问表格存储时出现SocketTimeoutException异常 2025-04-22 14:18

由于网络不通或网络抖动、服务器高负载、客户端Full GC等原因可能会导致客户端访问表格存储超时。当出现客户端访问超时的问题时,您需要通过检查网络连通性、服务器延迟、客户端是否出现Full GC问题等操作来解决该问题。 问题现象 使用Java SDK访问表格存储时出现Unexpected error

Java SDK日志库相关问题 2025-04-22 14:18

表格存储Java SDK使用的是哪个日志库? 表格存储Java SDK依赖的是slf4j,在依赖中默认依赖log4j2作为日志实现库。</

使用SDK时出现Validate PK type fail异常 2025-04-22 14:18

当使用SDK出现Validate PK type fail异常时,请确保设置的主键数据类型和数据表的主键数据类型一致。 问题现象 使用SDK写入数据时出现如下异常:

使用SDK时出现Validate PK size fail异常 2025-04-22 14:18

当使用SDK出现Validate PK size fail异常时,请确保设置的主键个数和数据表的主键个数一致。 问题现象 使用SDK更新数据时出现如下异常:

使用SDK时出现Validate PK name fail异常 2025-04-22 14:18

当使用SDK时出现Validate PK name fail异常时,请确保设置的主键名称与主键顺序和数据表的主键名称与主键顺序一致。 问题现象 使用SDK查询数据时出现如下异常:

使用Java SDK时出现The access key id is invalid异常 2025-04-22 14:18

现象 使用Java SDK时出现如下异常:

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号