前言
近来有位朋友让我用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
22WareWriteUpdateWareRequest 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,找不到类,什么鬼哦。
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>
本以为这样就没有问题了。但是事不如己愿,哈哈,又出现了下面的问题。
解决
看到这个异常我的第一反应就是open-api-sdk中调用的jar包的版本一定比我配置的要高,于是我在mavenrepository里面搜索了最新的jackson-core-asl和jackson-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>
然后,我再次运行了代码,得到以下结果。
吐槽
说实话,第一次见到sdk里面使用了三方的jar,但是又不在文档里面说明的,也是服气~
毒鸡汤
日子还长,别太失望~