Maven引入druid报错Could not find artifact com.sun:jconsole:jar:1.8如何解决
配置有效性判断
你提供的排除配置是完全正确的。
druid 1.2.6版本默认依赖了com.sun下的tools和jconsole两个构件,这两个包属于JDK8自带的私有类包,不会在公共Maven仓库分发,因此在CI环境、高版本JDK环境或者未做特殊配置的本地环境执行Maven构建时都会触发找不到构件的报错。排除这两个依赖不会影响Druid的核心数据源功能,仅当你需要使用Druid监控模块的JVM底层指标采集能力时才会用到这两个依赖,普通业务开发场景下可以安全排除。
其他可行解决方案
- 升级druid-spring-boot-starter版本:1.2.8及之后的官方版本已经默认移除了对
com.sun:tools、com.sun:jconsole的强制依赖,直接将依赖版本升级到最新稳定版即可省略手动排除的配置。 - 配置JDK本地依赖:如果确实需要使用这两个依赖对应的功能,且你的运行环境固定为JDK8,可以在pom中添加system范围的依赖指向本地JDK路径中的对应jar包,参考配置如下:
<dependency> <groupId>com.sun</groupId> <artifactId>jconsole</artifactId> <version>1.8</version> <scope>system</scope> <systemPath>${java.home}/../lib/jconsole.jar</systemPath> </dependency> <dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.8</version> <scope>system</scope> <systemPath>${java.home}/../lib/tools.jar</systemPath> </dependency>
该方案适配性较差,高版本JDK已移除这两个jar包,不推荐长期使用。
- 私有仓库上传依赖:如果是团队统一构建场景,可以将
jconsole.jar和tools.jar上传至团队内部私有Maven仓库,所有项目和CI环境都可以正常拉取依赖,无需单独配置排除规则或本地路径。
内容的提问来源于stack exchange,提问作者尚轶轩
相关产品推荐
相关产品推荐

