开发者社区> 问答> 正文

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

木洛 2016-05-11 16:49:19 4430

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

分享到
取消 提交回答
全部回答(4)
  • 木洛
    2019-07-17 18:59:37
    已采纳

    可以使用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的依赖。

    4 0
  • 271840134137715953
    2019-07-17 18:59:37
        <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>
    0 0
  • elasticsmonitor
    2019-07-17 18:59:37

    如果别人也遇到这个问题,而又不能改依赖的阿里库版本。

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

    0 0
  • 亦征
    2019-07-17 18:59:37

    如果出现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>
    0 0
添加回答

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题