项目场景:
同样项目代码,其他人可以正常运行单测,本人junit单测无法启动。
问题描述
java: java.lang.ClassCastException: com.sun.proxy.$Proxy19 cannot be cast to com.sun.tools.javac.processing.JavacProcessingEnvironment
原因分析:
排除代码本身问题,应该是本地java虚拟机问题。网上查询类似问题后得出,需要设置jvm参数。应该是与Lombok或者mapStruct注解有关
解决方案:
需要添加jvm参数:-Djps.track.ap.dependencies=false
具体如下图:
命令解析
在 Java 程序中,使用 -D 参数设置系统属性是一种常见的做法。而 -Djps.track.ap.dependencies=false 这个参数表示设置了一个名为 jps.track.ap.dependencies 的系统属性,并将其值设为 false。
具体含义如下:
jps: 表示 Java 进程状态(Java Process Status)的缩写,它是与 Java 进程相关的工具和服务的名称前缀。
track.ap.dependencies: 可能是指 “track application dependencies”,即跟踪应用程序依赖关系。
false: 表示将该特性关闭或禁用。
因此,-Djps.track.ap.dependencies=false 这个参数的含义是告诉 Java 进程状态相关的工具或服务不要跟踪应用程序的依赖关系,或者禁用与应用程序依赖关系跟踪相关的某些功能。
换句话说,当设置为 false 时,它表示不开启动态依赖跟踪功能。这可能会影响动态类加载和类卸载的行为,因为在某些情况下,JVM可能无法确定类是否被动态加载,并且可能不会自动卸载这些类。
其他解决方法
这个需要勾选