当解析链式调用时,如:“ClassA.getClassB().methodB()”.
尽管预先在JavaParserFacade中,添加了所有必须的JarTypeSolver,包括ClassB所在的Jar包.
并且debug确认JavaParser已成功添加ClassB所在的JarTypeSolver.
解析到"ClassA.getClassB().methodB()“这样的链式调用时,还是会报"NotFoundException”,ClassB找不到.
于是debug JavaParser 和 javassist 的源码,发现CtMethod在调用getReturnType方法时,
会使用declaringClass的ClassPool来解析ClassB,这就导致了NotFoundException 的出现.
evaluate declaringClass的ClassPool发现,这里边并没有包含ClassB.
于是,修改JavaParser的源码,在getReturnType报NotFoundException时,
catch异常,并使用上下文中的typeSolver来解析ClassB,并解析成功.
已给Javaparser 提pull request: https://github.com/javaparser/javaparser/pull/2398
PR已被接受.