常见问题
使用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解析报错
- 服务端返回的数据格式不符合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。