更新时间:2024-12-02 GMT+08:00
分享

常见问题

使用java sdk出现第三方库冲突

当出现第三方库冲突的时,如Jackson,okhttp3版本冲突等。可以引入如下bundle包(3.0.40-rc版本后),该包包含所有支持的服务和重定向了SDK依赖的第三方软件,避免和业务自身依赖的库产生冲突:

<dependency>
    <groupId>com.huaweicloud.sdk</groupId>
    <artifactId>huaweicloud-sdk-bundle</artifactId>
    <version>[3.0.40-rc, 3.1.0)</version>
</dependency>

jackson版本要求请见pom.xml

使用java sdk出现json解析报错

图1 json解析报错
  • 服务端返回的数据格式不符合json格式,导致sdk侧解析json数据报错。
  • 服务端返回的json数据不符合json反序列化的规则,和sdk定义的数据结构不一致,导致反序列化失败。
  • sdk json数据解析问题。
  • 建议排查服务端返回的数据是否和服务SDK设计的结构、字段一致。

SDK运行报错

  • java.lang.NoClassDefFoundError: Could not initialize class com.huaweicloud.sdk.core.http.HttpConfig at com.huaweicloud.sdk.core.ClientBuilder.build(ClientBuilder.java:98)

    HttpConfig这个类在sdk-core包里面找不到,造成原因为用户使用的sdk版本太老导致,建议使用最新版本的华为云java sdk,运行代码再具体定位。

  • java.lang.NoSuchFieldError: ALLOW_LEADING_DECIMAL_POINT_FOR_NUMBERS

    这个字段是jackson-core里面用来标识解析json格式数据是否支持前导小数点的字段,这个报错的意思是找不到这个字段,很可能是因为用户使用的jackson版本太老导致。

    建议客户本地将jackson版本升级到和华为云java sdk一致,jackson版本要求请见pom.xml

    引用华为云java sdk的bundle包来解决jackson版本冲突的问题。

    <dependency>
        <groupId>com.huaweicloud.sdk</groupId>
        <artifactId>huaweicloud-sdk-bundle</artifactId>
        <version>[3.0.40-rc, 3.1.0)</version>
    </dependency>
  • java.lang.ClassNotFoundException: com.fasterxml.jackson.datatype.jsr310.JavaTimeModule

    用户本地工程引入了jackson框架,和华为云sdk引入的jackson框架冲突了,导致会报找不到某个类,建议客户在本地引入bundle包报来避免出现依赖冲突。

    <dependency>
        <groupId>com.huaweicloud.sdk</groupId>
        <artifactId>huaweicloud-sdk-bundle</artifactId>
        <version>[3.0.40-rc, 3.1.0)</version>
    </dependency>
  • java.lang.ClassNotFoundException: okhttp3/Interceptor

    用户本地引入的Okhttp3版本和华为云冲突,okhttp版本要求请见pom.xml

相关文档