记录一次异常:
“exception”:"java.lang.NoSuchMethodError: com.google.common.base.Joiner.withKeyValueSeparator©Lcom/google/common/base/Joiner$MapJoiner;\n\tat com.alibaba.cloudapi.sdk.core.util.SignUtil.buildHeaders(SignUtil.java:174)\n\tat com.alibaba.cloudapi.sdk.core.util.SignUtil.combineParamsTogether(SignUtil.java:109)\n\tat com.alibaba.cloudapi.sdk.core.util.SignUtil.sign(SignUtil.java:65)\n\tat com.alibaba.cloudapi.sdk.core.BaseApiClient.buildHttpRequest(BaseApiClient.java:187)\n\tat com.alibaba.cloudapi.sdk.core.BaseApiClient.syncInvoke(BaseApiClient.java:246)\n\tat …
由于公司需求需要接入阿里云认证接口,在引入sdk依赖时发现调用接口报如上错误,从报错可以看出说是找不到withKeyValueSeparator此方法,但我进入sdk发现里面已经引用了guava 20.0的版本,里面有此方法,通过依赖工具查看pom依赖发现由于原来已经引入了guava 18.0的依赖并编译也是此版本。后进入到两个不同版本发现确实会少一个方法。
<dependency>
<groupId>com.aliyun.api.gateway</groupId>
<artifactId>sdk-core-java</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
guava 20
guava18