代码如下:
package test.copy;
import com.jd.open.api.sdk.DefaultJdClient;
import com.jd.open.api.sdk.JdClient;
import com.jd.open.api.sdk.JdException;
import com.jd.open.api.sdk.request.mall.WarePriceGetRequest;
import com.jd.open.api.sdk.response.mall.WarePriceGetResponse;
public class Tes {
public static void main(String[] args) {
String SERVER_URL = "https://api.jd.com/routerjson?";
String appKey = "bd……8";
String appSecret = "a7……da";
String accessToken = "";
JdClient client=new DefaultJdClient(SERVER_URL,accessToken,appKey,appSecret);
WarePriceGetRequest request=new WarePriceGetRequest();
request.setSkuId("4……2");
try {
WarePriceGetResponse response=client.execute(request);
System.out.println(response);
} catch (JdException e) {
e.printStackTrace();
}
}
}
运行报错如下:
Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper
at com.jd.open.api.sdk.internal.util.JsonUtil.(JsonUtil.java:18)
at com.jd.open.api.sdk.request.mall.WarePriceGetRequest.getAppJsonParams(WarePriceGetRequest.java:35)
at com.jd.open.api.sdk.DefaultJdClient.buildUrl(DefaultJdClient.java:131)
at com.jd.open.api.sdk.DefaultJdClient.execute(DefaultJdClient.java:96)
at test.copy.Tes.main(Tes.java:22)
Caused by: java.lang.ClassNotFoundException: org.codehaus.jackson.map.ObjectMapper
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 5 more
有小哥哥知道是什么原因吗?233333……
org.codehaus.jackson.map.ObjectMapper你的程序运行需要依赖这个包,但是它没找到,你可以查下这个包,然后导进去
缺包,只能找包导入或者添加maven依赖
NoClassDefFoundError错误的发生,是因为Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。例如在运行时我们想调用某个类的方法或者访问这个类的静态成员的时候,发现这个类不可用,此时Java虚拟机就会抛出NoClassDefFoundError错误。与ClassNotFoundException的不同在于,这个错误发生只在运行时需要加载对应的类不成功,而不是编译时发生。很多Java开发者很容易在这里把这两个错误搞混。
缺少包,看看import后面哪个点不进去,就少哪个包,导入就可以了