Appium执行mvn test报jdk.proxy2.$Proxy10.proxyClassLookup()错误问询
问题根因分析
- 核心冲突是旧版AspectJ与Java 15的版本不兼容:你pom中配置的AspectJ版本为1.8.10,该版本发布于2016年,仅支持到Java 8,完全不兼容Java 9及以上版本的模块化、动态代理机制。
- 运行逻辑差异导致IDE跑正常、maven跑报错:IntelliJ的TestNG插件运行测试时,默认不会加载maven中配置的aspectjweaver代理,所以不会触发冲突;而执行
mvn test时,surefire插件会按照配置加载旧版本的aspectjweaver代理,访问Java 15中默认被限制的内部反射方法,就会抛出该异常。
解决方案
按顺序修改pom.xml配置即可:
- 升级AspectJ版本到支持Java 15的版本,将properties中的aspectj版本配置修改为:
<aspectj.version>1.9.7</aspectj.version>
- 给surefire插件添加JVM启动参数,放开Java模块化对内部反射方法的访问限制,修改后的argLine配置如下:
<argLine> --add-opens java.base/jdk.internal.reflect=ALL-UNNAMED -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar" </argLine>
- 清理冗余配置:删除dependencies节点下的
maven-compiler-plugin依赖,该插件仅需在build/plugins节点下配置即可,不需要作为项目依赖引入。 - 执行
mvn clean test验证,即可正常运行测试。
内容的提问来源于stack exchange,提问作者Adam YourBuddy Bethlehem
相关产品推荐
相关产品推荐

