关于京东open-api-sdk的那些坑

前言

  近来有位朋友让我用java测试下京东的open-api-sdk的调用,对此记录下在测试过程中遇到的那些坑。

ClassNotFound

  于是乎我将sdk下载下来集成到项目中,然后按照文档上的内容编写了下面的代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
WareWriteUpdateWareRequest request = new WareWriteUpdateWareRequest();
Ware ware = new Ware();
ware.setWareId(/*wareId*/);
ware.setTitle(/*title*/);
ware.setTransportId(/*transportId*/);
request.setWare(ware);
JdClient client = new DefaultJdClient(
"serverUrl",
"accessToken",
"appKey",
"appSecret"
);
try {
WareWriteUpdateWareResponse execute = client.execute(request);
if (execute.getSuccess()) {
System.out.println("请求成功:" + execute.getMsg());
} else {
System.out.println("请求失败:" + execute.getMsg());
}
} catch (JdException e) {
e.printStackTrace();
}

  似乎是没有毛病的,然后我运行了代码,得到了下面的结果!你没有看错,wtf,找不到类,什么鬼哦。classNotFound

NoSuchMethod

  然后朋友给我发了一篇博客,按照里面的配置,我修改了项目配置为maven项目,然后添加了如下的依赖。

1
2
3
4
5
6
7
8
9
10
11
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.8.11</version>
</dependency>

<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.8.11</version>
</dependency>

  本以为这样就没有问题了。但是事不如己愿,哈哈,又出现了下面的问题。NoSuchMethod

解决

  看到这个异常我的第一反应就是open-api-sdk中调用的jar包的版本一定比我配置的要高,于是我在mavenrepository里面搜索了最新的jackson-core-asljackson-mapper-asl的jar最新版本,并且修改了pom.xml中的version信息。如下所示:

1
2
3
4
5
6
7
8
9
10
11
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>

<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>

  然后,我再次运行了代码,得到以下结果。Result

吐槽

  说实话,第一次见到sdk里面使用了三方的jar,但是又不在文档里面说明的,也是服气~

毒鸡汤

  日子还长,别太失望~

本文标题:关于京东open-api-sdk的那些坑

文章作者:严方雄

发布时间:2018-02-27

最后更新:2018-09-13

原始链接:http://yanfangxiong.com/2018/02/27/关于京东open-api-sdk的那些坑/

0%