JDK 10下Maven因缺失tools.jar报错,cobertura插件2.7找不到该文件
解决cobertura-maven-plugin 2.7找不到tools.jar的问题
这个问题的核心原因很明确:你用的是JDK 10,而cobertura-maven-plugin 2.7是个比较老旧的版本(2015年发布),它的设计只兼容JDK 8及更早版本——在JDK 9及以后的版本中,tools.jar已经被移除,相关工具类被整合到JDK的模块系统里,插件还在按旧路径逻辑查找这个不存在的文件,所以才会报错。
你在pom.xml里声明的com.sun:tools依赖其实起不到作用,因为这个插件并不是通过Maven依赖加载tools类的,而是直接硬编码去JDK_HOME/../lib/tools.jar路径查找,所以就算你加了依赖,插件还是会走自己的旧逻辑。
下面给你两个可行的解决方案:
方案1:升级cobertura-maven-plugin到兼容JDK9+的版本
这是最推荐的长期解决方案,新版本的插件已经适配了JDK9及以后的模块系统,不会再去查找tools.jar。你可以把插件版本升级到2.11.1(或更高稳定版本),修改pom.xml里的插件配置:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.11.1</version> <!-- 其他原有配置保持不变 --> </plugin>
升级后记得移除你之前加的com.sun:tools依赖,因为JDK9+不需要这个依赖,留着反而可能引发不必要的冲突。
方案2:降级JDK到JDK8(临时方案)
如果因为项目限制暂时不能升级插件,你可以把项目使用的JDK切换回JDK8——JDK8里还保留着tools.jar,插件能正常找到它,不会报错。不过这个方案只是权宜之计,毕竟JDK8已停止官方支持,长期来看还是建议升级插件。
内容的提问来源于stack exchange,提问作者juerg
相关产品推荐
相关产品推荐

