使用JGit、PMD做Java静态代码分析时遇StackOverflowError求助
问题原因分析
循环引用引发无限递归
你的custom-ruleset.xml文件中存在自我引用:
<rule ref="./custom-ruleset.xml"/>
PMD解析规则集时,会反复加载同一个文件,触发无限递归调用,最终耗尽栈空间抛出java.lang.StackOverflowError。异常栈中重复出现的parseRuleSetNode与parseRuleSetReferenceNode调用链,也验证了这一无限循环的存在。
解决办法
- 修正规则集引用路径:若存在独立的自定义规则集文件(如
my-custom-rules.xml),将引用路径改为指向该文件:<rule ref="./my-custom-rules.xml"/> - 移除自我引用:如果没有独立的自定义规则集,直接删除
<rule ref="./custom-ruleset.xml"/>这一行,将自定义规则直接编写在当前文件内。 - 重命名文件(可选):若当前文件是组合规则集,建议重命名为
combined-ruleset.xml,避免与真正的自定义规则集文件混淆。
内容的提问来源于stack exchange,提问作者New Bee Beginner
相关产品推荐
相关产品推荐

