开发环境

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构建的,所以添加了这两个依赖。

所以导致这个的原因也就明了了

  1. 开发环境使用的JDK和 com.alibaba.druid 包不一致;
  2. 这是 com.alibaba.druid 的一个bug,未考虑不同JDK环境的影响

解决问题

问题是找到了,该怎么解决呢?

目前,我想到的解决方案有3个

  1. 切换到其他版本,如 1.2.5。(已验证)
  2. 注释掉这两个依赖。正常开发没有影响。(已验证)
  3. 使用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)也出现过,并且后来的版本也修复了。但是最近又出现了这样的问题...

The POM for com.alibaba:druid:jar:1.2.6 is invalid, transitive dependencies (if any) will not be available的更多相关文章

  1. Maven 错误 :The POM for com.xxx:jar:0.0.1-SNAPSHOT is invalid, transitive dependencies (if any) will not be available

    一个大的maven 项目,结构是一个根pom,下面几个小的module,包括了appservice-darc,appservice-entity等,其中appservice-darc 依赖了 apps ...

  2. maven编译问题之 -The POM for XXX is invalid, transitive dependencies (if any) will not be available

    问题一: 把父工程tao-parent install 到maven本地仓后,接着install tao-common工程,然后报错 报错信息如下: [WARNING] The POM for com ...

  3. mvn 报错 - The POM for <name> is invalid, transitive dependencies (if any) will not be available

    核心:  通过 mvn dependency:tree -X 分析依赖解决方案:  解决依赖冲突版本 1. MILGpController 编译突然报错 14:10:28 [ERROR] Failed ...

  4. The POM for XXX is invalid, transitive dependencies (if any) will not be available解决方案

    今天,某个开发的环境在编译的时候提示警告The POM for XXX is invalid, transitive dependencies (if any) will not be availab ...

  5. 阿里巴巴高新能数据源com.alibaba.druid.pool.DruidDataSource的jar包配置

    aspectjweaver-1.7.4.jar druid-0.2.9.jar 两个包,用于提供com.alibaba.druid.pool.DruidDataSource

  6. com.alibaba.druid.sql.parser.ParserException: syntax error, QUES %, pos 80 like报错解决

    最近,把各应用的jdbc连接池统一从dbcp2改成了druid,运行时druid报sql解析错误,如下: select * from test         where 1=1         &l ...

  7. Druid.jar包

    首先了解一下,什么是Druid. Druid是Java语言中最好的数据库连接池,它能够提供强大的监控和扩展功能. Druid是一个JDBC组件,它包括三部分: 1)DruidDriver 代理Driv ...

  8. com.alibaba.druid.pool.DruidDataSource : {dataSource-2} init error

    这几天准备写一个项目,其中的整合druid的时候,发现出现了下面这个错误.找了好久都没有找到.网上的各种解决方法都不对. 2018-11-07 16:26:28.940 INFO 19684 --- ...

  9. alibaba/druid 下的 密码加密

    使用ConfigFilter cliangch edited this page on 3 Feb · 12 revisions ConfigFilter的作用包括: 从配置文件中读取配置 从远程ht ...

随机推荐

  1. Java对象内存模型

    2 Java对象内存模型 在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header). 实例数据(Instance Data)和对齐填充(Padding). 在 JVM ...

  2. java类的反射机制

    1.获得一个类的类对象有哪些方式? - 方法1:类型.class,例如:String.class- 方法2:对象.getClass(),例如:"hello".getClass()- ...

  3. Vue.use()用法

    通常我们引入一个第三方组件形式的插件进来时,我们在main.js里面需要Vue.use('该插件名字'),比如引入一个vant组件 那么我们如何自己也来尝试将自己封装的组件以Vue.use()的形式来 ...

  4. 利用SelectPdf插件将网页生成PDF

    简介 适用于.NET Framework和.NET Core的HTML至PDF转换器 SelectPdf提供的在线html到pdf转换器使用.NET的Select.Pdf库中的html到pdf转换器. ...

  5. 不难懂————Promise对象 + 详解

    1.Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和更强大.它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了P ...

  6. 安卓开发常见Bug-setContentView(R.layout.....)报错

    这是安卓开发的常见错误,当你在引用或者复制别人的Layout xml文件时需要在AndroidManifest.xml中添加东西 需要将图中的activity android:name添加进去,否则是 ...

  7. Springboot整合RocketMQ解决分布式事务

    直接上代码: 代码结构如下: 依次贴出相关类: DataSource1Config: package com.example.demo.config;import org.apache.ibatis. ...

  8. Block内存管理

    block是不是一个对象?是一个对象 如何判断当前文件是MRC,还是ARC 1.dealloc 能否调用super,只有MRC才能调用super 2.能否使用retain,release.如果能用就是 ...

  9. SSH 密钥登录

    一.什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录. 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会 ...

  10. VC 创建快捷方式

    转载请注明来源:https://www.cnblogs.com/hookjc/ VC6下测试时使用的是绝对地址BOOL CFGDlg::CreateLink (        LPSTR szPath ...