Gradle升级至8后compileTestJava执行失败问题排查求助
问题背景
升级至Gradle 8前一切正常,升级后出现以下两次错误:
首次启动错误
移除CMSClassUnloadingEnabled参数前,启动时抛出虚拟机创建失败错误:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 Unrecognized VM option 'CMSClassUnloadingEnabled' Error: Could not create the java virtual Machine Error: A fatal exception has occured
编译测试代码错误
移除上述VM参数后,测试用例编译报错:
/workersfsPODB45/workspace/kenkins-build45/-1021654004/44/src/test/java/com/wellsfargo/ccbs/bizmanagers/PricingManagerTest.java:109: error: cannot find symbol private RequestInfo requestInfo;
其中RequestInfo来自JDK的org.omg.PortableInterceptor包,请问可能的原因是什么?
可能的原因分析
关于CMSClassUnloadingEnabled参数错误
- Gradle 8默认适配JDK 11及以上版本,而
CMSClassUnloadingEnabled是针对CMS垃圾收集器的专属参数。JDK 9起CMS被标记为废弃,JDK 14直接移除了该收集器,高版本JDK不再识别此参数,因此启动虚拟机失败。
关于RequestInfo找不到的编译错误
- JDK 9及以上版本启用模块化系统,Java EE相关模块(包括
org.omg.PortableInterceptor所属的CORBA模块)被移出默认加载范围,必须显式声明才能引入。Gradle 8默认使用高版本JDK,编译时不会自动加载这些模块,导致找不到RequestInfo类。 - Gradle 8的Java编译插件默认配置与旧版本存在差异,不再隐式包含这些已废弃/模块化的JDK模块依赖,进一步触发了编译错误。
内容的提问来源于stack exchange,提问作者daniel
相关产品推荐
相关产品推荐

