【WARNING】The POM for com.alibaba:druid:jar:1.1.21 is invalid 警告问题

本文解析了一个基于Maven的Web应用项目在运行时遇到的关于Druid 1.1.21版本的警告信息,详细介绍了警告的来源、运行环境及解决方案,指出该问题是由于Druid版本过高导致,通过降低版本至1.1.20可以解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运行一个基于maven的web-app骨架创建的工程时,报了如下[警告]

The POM for com.alibaba:druid:jar:1.1.21 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details

-> 开启debug模式,查看详细信息

[Windows]+R快捷键打开【cmd】命令行,cd进入当前项目所在目录:E:\IdeaProjects\maven_advanced_01

--cmd输出DEBUG信息
mvn clean install -X
--或者直接把DEBUG信息输出到本地的debug.txt文件
mvn clean install -X > debug.txt

打印输出项目运行的DEBUG信息,发出一个警告

[WARNING] The POM for com.alibaba:druid:jar:1.1.21 is invalid, transitive dependencies (if any) will not be available: 4 problems were encountered while building the effective model for com.alibaba:druid:1.1.21
[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 @
[WARNING] 'dependencies.dependency.systemPath' for com.alibaba:jconsole:jar refers to a non-existing file D:\Program Files\Java\jdk-13.0.2\lib\jconsole.jar @
[WARNING] 'dependencies.dependency.systemPath' for com.alibaba:tools:jar refers to a non-existing file D:\Program Files\Java\jdk-13.0.2\lib\tools.jar @

-> 查看依赖包关系树结构

--cmd输出
mvn dependency:tree
--cmd输出到本地tree.txt
mvn dependency:tree > tree.txt
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< com.yy:maven_advanced_01 >----------------------
[INFO] Building maven_advanced_01 1.0-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[WARNING] The POM for com.alibaba:druid:jar:1.1.21 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ maven_advanced_01 ---
[INFO] com.yy:maven_advanced_01:war:1.0-SNAPSHOT
[INFO] +- org.mybatis:mybatis:jar:3.5.4:compile
[INFO] +- org.mybatis:mybatis-spring:jar:2.0.4:compile
[INFO] +- com.github.pagehelper:pagehelper:jar:5.1.11:compile
[INFO] |  \- com.github.jsqlparser:jsqlparser:jar:2.0:compile
[INFO] +- mysql:mysql-connector-java:jar:8.0.19:runtime
[INFO] |  \- com.google.protobuf:protobuf-java:jar:3.6.1:runtime
[INFO] +- com.alibaba:druid:jar:1.1.21:compile
[INFO] +- c3p0:c3p0:jar:0.9.1.2:compile
[INFO] +- org.springframework:spring-context:jar:5.2.4.RELEASE:compile
[INFO] |  +- org.springframework:spring-aop:jar:5.2.4.RELEASE:compile
[INFO] |  +- org.springframework:spring-core:jar:5.2.4.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-jcl:jar:5.2.4.RELEASE:compile
[INFO] |  \- org.springframework:spring-expression:jar:5.2.4.RELEASE:compile
[INFO] +- org.springframework:spring-beans:jar:5.2.4.RELEASE:compile
[INFO] +- org.springframework:spring-web:jar:5.2.4.RELEASE:compile
[INFO] +- org.springframework:spring-webmvc:jar:5.2.4.RELEASE:compile
[INFO] +- org.springframework:spring-jdbc:jar:5.2.4.RELEASE:compile
[INFO] +- org.springframework:spring-aspects:jar:5.2.4.RELEASE:compile
[INFO] |  \- org.aspectj:aspectjweaver:jar:1.9.5:compile
[INFO] +- org.springframework:spring-jms:jar:5.2.4.RELEASE:compile
[INFO] |  \- org.springframework:spring-messaging:jar:5.2.4.RELEASE:compile
[INFO] +- org.springframework:spring-context-support:jar:5.2.4.RELEASE:compile
[INFO] +- org.springframework:spring-tx:jar:5.2.4.RELEASE:compile
[INFO] +- org.springframework:spring-test:jar:5.2.4.RELEASE:compile
[INFO] +- org.springframework:spring-orm:jar:5.2.4.RELEASE:compile
[INFO] +- org.springframework.security:spring-security-web:jar:5.3.0.RELEASE:compile
[INFO] +- org.springframework.security:spring-security-config:jar:5.3.0.RELEASE:compile
[INFO] +- org.springframework.security:spring-security-core:jar:5.3.0.RELEASE:compile
[INFO] +- org.springframework.security:spring-security-taglibs:jar:5.3.0.RELEASE:compile
[INFO] |  \- org.springframework.security:spring-security-acl:jar:5.3.0.RELEASE:compile
[INFO] +- jstl:jstl:jar:1.2:compile
[INFO] +- javax.servlet:javax.servlet-api:jar:4.0.1:provided
[INFO] +- javax.servlet:jsp-api:jar:2.0:provided
[INFO] |  \- javax.servlet:servlet-api:jar:2.4:provided
[INFO] +- log4j:log4j:jar:1.2.17:compile
[INFO] +- org.slf4j:slf4j-api:jar:1.7.30:compile
[INFO] +- org.slf4j:slf4j-log4j12:jar:1.7.30:test
[INFO] +- org.slf4j:slf4j-simple:jar:1.6.6:compile
[INFO] \- junit:junit:jar:4.12:test
[INFO]    \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.447 s
[INFO] Finished at: 2020-03-22T19:31:38+08:00
[INFO] ------------------------------------------------------------------------

 


#1-> 警告的详细内容如下

[WARNING] The POM for com.alibaba:druid:jar:1.1.21 is invalid, transitive dependencies (if any) will not be available: 4 problems were encountered while building the effective model for com.alibaba:druid:1.1.21
[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 @ 
[WARNING] 'dependencies.dependency.systemPath' for com.alibaba:jconsole:jar refers to a non-existing file D:\Program Files\Java\jdk-13.0.2\lib\jconsole.jar @ 
[WARNING] 'dependencies.dependency.systemPath' for com.alibaba:tools:jar refers to a non-existing file D:\Program Files\Java\jdk-13.0.2\lib\tools.jar @ 

#2-> 运行环境 :InteIliJ IDEA 2019.3.3 (Ultimate Edition) + jdk 13.0.2 + apache maven 3.6.3

#3-> 尝试解决问题

一开始在网上看了很多博客,都没有解决这个问题。

- 有人说是JDK的环境变量没有配好,确认过jdk环境配置没有问题。

- 有人说要修改这里的${project.basedir},但他们基本是在使用gradle的时候遇到这个问题的,感觉跟我遇到的问题也不太一样。最关键的是根本找不到这个默认的${project.basedir}地址在哪里,也不知道去哪个文件里修改这个路径。

所以这里的两个 [ERROR] 说要指定一个绝对路径,但找不到${project.basedir},修改绝对路径这条路算是没法玩了。

这里还有两个 [WARNING] 显示找不到JAVA_HOME\lib下的tools.jarjconsole.jar,但是我使用的JDK最新版13.0.2默认安装完成以后本身就没有JRE目录,自己生成JRE目录之后,也找不到这俩文件。

百度了一下,原来新版本的jdk自9.+之后就没有JRE目录了,同时这两个文件也找不到了,配置环境变量的时候也省去了这两个路径的配置,直接把JAVA_HOME/bin挂到path就可以了。

那怎么办,难道要换JDK版本吗?但是为什么这个警告的提示仅仅只报了com.alibaba.druid这一个单独的jar包呢?如果jdk有问题整个项目应该都无法运行才对。

这才开始考虑是不是跟引入的com.alibaba.druid这个jar包有关,我用的这个连接池是最新版1.1.21,我尝试降低了jar包的版本,改成1.1.20,就解决了。=b

针对最新版1.1.21,看到很多小伙伴跟我遇到了同样的问题,所以合理的怀疑这可能是个官方bug。

https://github.com/alibaba/druid/issues/3564

<think>我们正在处理一个Maven构建问题,具体错误信息是:[WARNING] ThePOMfor com.alibaba:druid:jar:1.2.6 isinvalid,transitive dependencies(ifany)will notbe available, enabledebug loggingfor moredetails这个警告意味着Maven在尝试解析`com.alibaba:druid:jar:1.2.6`的POM文件时遇到了问题,导致无法获取该依赖的传递依赖(即该依赖所依赖的其他库)。这可能会导致后续的构建失败,因为缺少必要的依赖。 ###问题原因分析根据引用内容[^1][^2][^3][^4],该问题通常由以下原因引起:1.**POM文件损坏或无效**:Maven从仓库下载的`druid-1.2.6.pom`文件可能损坏或格式不正确,导致Maven无法解析。 2. **版本兼容性问题**:某些版本的Druid可能与其依赖的其他库存在版本冲突,或者该版本的POM文件本身存在缺陷(如错误的依赖声明)。3.**仓库问题**:本地仓库中的POM文件可能下载不完整,或者远程仓库(如Maven中央仓库)在该版本发布时存在问题。 ###解决方案####1.清理本地仓库并重新下载(推荐第一步) -删除本地Maven仓库中对应的Druid目录:-路径示例:`${user.home}/.m2/repository/com/alibaba/druid/1.2.6` -重新执行Maven构建命令(如`mvnclean install-U`),`-U`参数强制更新快照和缺失的依赖。####2.降低Druid版本(若重新下载无效) 如引用[^2][^3]所示,降级到稳定版本(如1.1.12或1.1.20)可解决:```xml<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.12</version><!--或1.1.20--> </dependency>``` **版本选择建议**: -JDK1.8用户:推荐`1.1.20`(引用[^3]明确支持)-需要最新功能:尝试`1.2.5`(1.2.6的上一版本)####3.检查远程仓库配置确保`settings.xml`配置了可靠的镜像(如阿里云): ```xml<mirror><id>aliyunmaven</id><url>https://maven.aliyun.com/repository/public</url><mirrorOf>central</mirrorOf> </mirror> ```####4.启用Maven调试日志通过`-X`参数获取详细错误信息:```bashmvn cleaninstall -X``` 在日志中搜索`druid-1.2.6.pom`,定位具体解析失败的原因。 ###验证修复构建成功后,检查依赖树确认Druid版本:```bashmvn dependency:tree-Dincludes=com.alibaba:druid```预期输出示例: ```[INFO] +- com.alibaba:druid:jar:1.1.20:compile``` ###根本原因深入- **POM文件结构缺陷**:Druid1.2.6的POM可能包含无效XML或依赖声明错误(如未指定`<scope>`或`<optional>`)。- **依赖冲突**:项目中的其他依赖可能强制覆盖了Druid的版本,引发兼容性问题(使用`mvn dependency:tree`排查冲突)。 >**重要提示**:若项目使用SpringBoot,需确保Druid版本与`spring-boot-starter-jdbc`兼容。Spring Boot2.7.x官方推荐Druid版本为`1.1.20+`[^5]。 §§相关问题§§1.如何解决Maven依赖冲突问题?2.Spring Boot项目中如何正确配置 Druid连接池? 3. Maven本地仓库损坏的常见修复方法有哪些?</think>### Druid 依赖 POM 无效的原因及解决方案 #### 问题原因分析 当出现 `The POM for com.alibaba:druid:jar:1.2.6 is invalid` 警告时,核心原因是 **Maven 无法正确解析 DruidPOM 文件**,导致传递依赖失效。具体原因包括: 1. **POM 文件损坏**(最常见) - 本地仓库中的 `druid-1.2.6.pom` 文件下载不完整或损坏 - 文件哈希校验失败(Maven 会验证 SHA1/MD5 校验和)[^1][^4] 2. **版本兼容性问题** - Druid 1.2.6 与当前项目的 JDK 版本不兼容(如 JDK 1.8 推荐使用 Druid 1.1.x) - 与其他依赖存在冲突(如 Spring Boot 版本)[^2][^3] 3. **仓库问题** - 远程仓库(如 Maven Central)暂时无法提供有效的 POM 文件 - 本地仓库索引损坏 4. **POM 元数据错误** - 该版本的 POM 文件包含无效的 XML 结构或依赖声明 --- ### 解决方案 #### 方法 1:清理并重新下载依赖(推荐) ```bash # 删除本地 Druid 依赖 rm -rf ~/.m2/repository/com/alibaba/druid/ # 强制更新依赖 mvn clean install -U ``` > 通过 `-U` 参数强制更新快照依赖,90% 的此类问题可通过此方法解决[^1][^4] #### 方法 2:降级 Druid 版本(兼容 JDK 1.8) ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <!-- 使用稳定版本 --> <version>1.1.20</version> <!-- 或 1.1.12 --> </dependency> ``` > JDK 1.8 用户推荐使用 1.1.x 系列,兼容性更好[^2][^3] #### 方法 3:验证 POM 文件完整性 1. 打开本地仓库文件: ``` ~/.m2/repository/com/alibaba/druid/1.2.6/druid-1.2.6.pom ``` 2. 检查文件是否包含完整的 XML 结构: ```xml <!-- 正常文件开头应包含 --> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="..."> ``` 3. 对比中央仓库原始文件: [https://repo1.maven.org/maven2/com/alibaba/druid/1.2.6/druid-1.2.6.pom](https://repo1.maven.org/maven2/com/alibaba/druid/1.2.6/druid-1.2.6.pom) #### 方法 4:配置阿里云镜像 在 `settings.xml` 中添加: ```xml <mirror> <id>aliyun</id> <url>https://maven.aliyun.com/repository/public</url> <mirrorOf>central</mirrorOf> </mirror> ``` --- ### 验证修复 执行以下命令检查依赖树: ```bash mvn dependency:tree -Dincludes=com.alibaba:druid ``` 正常输出应显示: ``` [INFO] \- com.alibaba:druid:jar:1.1.20:compile ``` > **重要提示**:若使用 Spring Boot,需确保 Druid 版本与 Spring Boot 兼容: > - Spring Boot 2.4.x+ → Druid 1.2.x > - Spring Boot 2.3.x- → Druid 1.1.x[^3]
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值