IDEA里面debug的时候,针对stream流提供了流追踪调试功能,方便大家调试stream流代码。
最近改其他人代码,需要用到这个,发现提示内部错误。
然后百度一圈发现没啥解决方案,就自己看IDEA的日志,看看是什么引起的错误。帮助里面点击红框里的选项就可以在控制台看日志
看日志发现报了一个java.lang.ClassCastException
异常,com.sun.proxy.$Proxy8 cannot be cast to com.sun.tools.javac.processing.JavacProcessingEnvironment
。一看栈信息,发现是自己写的APT注解处理器中发生的异常。
然后去看了一下源码,发现代码有将processingEnv
变量强转成JavacProcessingEnvironment
类的操作,应该就是这里有问题。至于为什么使用这个流追踪工具会执行我这个代码,目前还不清楚,因为我这个AutoVersion
注解并没有在要调试的类中出现过。
最后加了一个变量判断传入的参数是否是JavacProcessingEnvironment
类,如果不是就给一个false,不处理后续的代码,改完之后推送到仓库,重新更新启动项目。发现可以正常调试stream了,控制台的异常也没有了。