开发环境
IDEA2020.3, jdk1.8.0_231
问题描述
开发中引入了druid-spring-boot-starter最新版本1.2.6,项目install时的时候一直出现警告
The POM for com.alibaba:druid:jar:1.2.6 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
寻找问题
按照提示编辑运行配置,输出debug日志
install -X -f pom.xml
再次执行,得到详细的日志‘
[DEBUG] ======================================================================= [WARNING] The POM for com.alibaba:druid:jar:1.2.6 is invalid, transitive dependencies (if any) will not be available: 2 problems were encountered while building the effective model for com.alibaba:druid:1.2.6 [ERROR] 'dependencies.dependency.systemPath' for com.sun:tools:jar must specify an absolute path but is ${project.basedir}/lib/openjdk-1.8-tools.jar @ [ERROR] 'dependencies.dependency.systemPath' for com.sun:jconsole:jar must specify an absolute path but is ${project.basedir}/lib/openjdk-1.8-jconsole.jar @
从日志看, com.sun:tools:jar,com.sun:jconsole:jar必须指定绝对路径,不能是相对路径!
但是是在哪里指定的呢?
仔细想了想,应该是在m2包目录下。结果真的在 druid-1.2.6.pom 文件中给找到了
pom文件在这里
C:\Users\admin\.m2\repository\com\alibaba\druid\1.2.6\druid-1.2.6.pom
使用notepad++ 打开搜索 com.sun,可以看到有两处,正式报错的两个地方!!!
com.alibaba.druid 这个包应该是使用OpenJDK构建的,所以添加了这两个依赖。
所以导致这个的原因也就明了了
- 开发环境使用的JDK和 com.alibaba.druid 包不一致;
- 这是 com.alibaba.druid 的一个bug,未考虑不同JDK环境的影响
解决问题
问题是找到了,该怎么解决呢?
目前,我想到的解决方案有3个
- 切换到其他版本,如 1.2.5。(已验证)
- 注释掉这两个依赖。正常开发没有影响。(已验证)
- 使用OpenJDK。(未验证)
还有一个办法就是视而不见,因为只是警告,并不影响使用。
后话
在 https://github.com/alibaba/druid 项目Issues 搜索也可以看到类似的问题。1.2.6 版本有人提,但是目前还没人解答
issue 地址 The POM for com.alibaba:druid:jar:1.2.6 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details · Issue #4305 · alibaba/druid · GitHub
有趣的是,这个问题在其他版本(1.1.21)也出现过,并且后来的版本也修复了。但是最近又出现了这样的问题...