开发者社区> 问答> 正文

使用表格存储(原OTS)的Java SDK遇到Protobuf或HttpClient库冲突时怎么办?

已解决

表格存储(原OTS)的Java SDK依赖了2.4.1版本的Protobuf库以及4.0.2的httpasyncclient,很容易与用户应用程序中自身带的相同库冲突,如果遇到了冲突,该如何解决?

展开
收起
木洛 2016-05-11 16:49:19 9582 0
4 条回答
写回答
取消 提交回答
  • 表格存储(TableStore)技术负责人,专注结构化数据存储领域技术和解决方案。
    采纳回答

    可以使用OTS SDK提供的一个特殊版本:

    <dependency>
      <groupId>com.aliyun.openservices</groupId>
      <artifactId>ots-public</artifactId>
      <version>2.2.5</version>
      <classifier>jar-with-dependencies</classifier>
      <exclusions>
               <exclusion>
                   <groupId>com.google.protobuf</groupId>
                   <artifactId>protobuf-java</artifactId>
              </exclusion>
      </exclusions>
    </dependency>
    

    或者

    <dependency>
      <groupId>com.aliyun.openservices</groupId>
      <artifactId>tablestore</artifactId>
      <version>4.2.3</version>
      <classifier>jar-with-dependencies</classifier>
      <exclusions>
               <exclusion>
                   <groupId>com.google.protobuf</groupId>
                   <artifactId>protobuf-java</artifactId>
              </exclusion>
      </exclusions>
    </dependency>
    

    注意classifier为jar-with-dependencies,它将依赖的HttpClient和Protobuf这两个库都通过rename package的方式打包进去,去除了对HttpClient和Protobuf的依赖。

    2019-07-17 18:59:37
    赞同 4 展开评论 打赏
  •     <dependency>
            <groupId>com.aliyun.openservices</groupId>
            <artifactId>tablestore</artifactId>
            <version>4.11.2</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>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.3</version>
        </dependency>
    2019-07-17 18:59:37
    赞同 展开评论 打赏
  • 如果别人也遇到这个问题,而又不能改依赖的阿里库版本。

    可以打开阿里的包,看他依赖哪个版本,手动的把这个版本添加到依赖里面去也可以。

    2019-07-17 18:59:37
    赞同 展开评论 打赏
  • 阿里云数据库表格存储(TableStore) 高级开发工程师

    如果出现HttpClient冲突时,可以把HttpClient相关的库也加到exclusion里,配置如下:

        <dependency>
            <groupId>com.aliyun.openservices</groupId>
            <artifactId>ots-public</artifactId>
            <version>2.2.4</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>
    2019-07-17 18:59:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载