在Eclipse的debug过程中遇到Source not found 的问题

来源:互联网 发布:淘宝买家怎么申诉违规 编辑:程序博客网 时间:2024/05/30 05:13

第一次:

CommonResVO commonResVO =JSON.parseObject(result, CommonResVO.class);

 

本来JSON.parseObject()方法的第一个参数应该是一个json字符串,但在这里我传的参数是xml字符串。

 

例子:

<taxMLxmlns="http://www.chinatax.gov.cn/gt3nf"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"targetNamespace="http://www.chinatax.gov.cn/gt3nf"cnName="" xsi:type="" version="SW5001-2006"><nsrhxWfwzcxGrid>     </nsrhxWfwzcxGrid></taxML>

 

Debug到这一句的时候,再step over 就报source notfound

 

报source not found的原因

因为你debug过程中进入了一些class文件而这些class文件你只有jar包没

有他们的源代码。

 

JSON.parseObject()来源于fastJson.jar

 

Ctrl+鼠标左键确实也只是进入了他的class文件

但是你会想问,step over应该是执行完这条语句,然后跳到下一条语句才对。

而不是step into 进入他的实现方法里。

说明执行的这条语句出错了。

 

第二次:

在debug到String result = bizService.queryData(rq);这一句时,再stepover报source not found

 

其实也是这一句出错,step over 不能执行过去,就会step in ,但是这一句由于调用者是bizService,会用到反射,涉及到spring的代码,而在工程里又找不到源文件,就会报source not found。

 

第三次:

进入queryData()方法,判断是哪一个语句出错。

在debug String result = bizDelegateService.requestXml(sid, requestXml,rq).getResponseContent();这一句时,再step over报source not found。

其实也是这一句出错,这一句调用了RPC服务。而因为没设置ywbm,所以ywbm为null,sid为null,所以底层调用了RPC服务出错,而只有底层的class文件,没有source code,所以报source not found。

 

 

总结:

如果step over 不能执行过去,就会stepin,那么会不断step in,最终往往会跳到源码层面,但是又没有源码的source code,所以就会报source not found。

即使是代码正常,如果是涉及到映射方面,也会跳到源码层面。

原创粉丝点击