JavaParser 无法解析链式调用的问题

当解析链式调用时,如:“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已被接受.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值