Maven报错Cannot resolve com.sun:tools:1.5该如何解决?
报错根因
从JDK 9开始,官方已移除传统JDK目录下lib文件夹中的tools.jar、rt.jar等组件,相关类全部整合到了JDK的模块化系统中,你使用的JDK 16自然不存在该文件。本次报错是项目依赖树中存在旧版第三方组件,间接引入了com.sun:tools:1.5坐标导致的。
解决方案
- 方案1:排除传递依赖的tools.jar引用
先通过mvn dependency:tree命令定位到引入com.sun:tools的上层依赖,在该依赖的配置中添加排除规则,示例如下:
<dependency> <groupId>对应上层依赖的groupId</groupId> <artifactId>对应上层依赖的artifactId</artifactId> <version>对应上层依赖的版本</version> <exclusions> <exclusion> <groupId>com.sun</groupId> <artifactId>tools</artifactId> </exclusion> </exclusions> </dependency>
- 方案2:升级相关依赖到兼容JDK9+的版本
对应引入tools.jar的第三方组件通常已经推出适配高版本JDK的更新,升级到对应新版本即可消除对旧版tools.jar的依赖。 - 方案3:手动标记tools依赖为provided
如果不想修改原有依赖配置,可以直接在pom.xml的dependencies节点中添加如下配置,标记该依赖由JDK环境提供,Maven不会再尝试拉取该jar包:
<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.5</version> <scope>provided</scope> </dependency>
- 方案4:降级JDK版本(不推荐)
如果项目本身不支持高版本JDK,可将本地运行Maven构建的JDK版本切换为JDK 8,JDK 8的lib目录下默认包含tools.jar文件。
内容的提问来源于stack exchange,提问作者Amir251251
相关产品推荐
相关产品推荐

