maven3.8.2版本导致openjdk.jar包报错:Cannot find file

2023-11-02

真的吐血了快!又是maven问题,导致项目打包报错。
maven问题梅开二度!!!我醉了呀!!!


问题描述

在idea中使用Terminal终端,对项目进行打包,然后报错。
报错信息:

[ERROR] Failed to execute goal on project msc-facade-base: Could not resolve dependencies for project com.shenzhenbsoft:msc-facade-base:jar:1.0: The following artifacts could not be
resolved: com.sun:tools:jar:1.8, com.sun:jconsole:jar:1.8: Could not find artifact com.sun:tools:jar:1.8 at specified path E:\localDepository\repo\com\alibaba\druid\1.1.21/lib/openjd
k-1.8-tools.jar -> [Help 1]
然而,使用idea自带的maven插件,同样的命令却成功了。

在这里插入图片描述


验证猜想

根据上面的结果来看,我首先怀疑的就是maven版本问题导致的。因为我本地的maven环境,前段时间刚更新过,由原来的的3.5.0换成了现在的3.8.2。
为了验证这个猜想,对环境进行了查看。

1、IDEA自带的maven插件的版本信息
打开settings找到maven的配置信息,可以看到我这里默认的版本是3.6.1
在这里插入图片描述
2、IDEA中Terminal终端中的maven版本
打开Terminal界面,输入mvn -v,可以看到当前的mvn版本是3.8.2
在这里插入图片描述
3、分别使用上面的2种方式,对项目打包
(1)使用maven插件打包,显示结果为success
在这里插入图片描述
(2)使用Terminal终端打包,报错
在这里插入图片描述
4、更换Terminal中maven的版本为3.5.0,然后进行打包
(1)设置maven版本
IDEA中的Terminal的环境,实际就是本地的cmd.exe程序,IDEA会默认加载系统的环境变量。但是这里会有一个缓存问题,当你的系统环境变量发生了改变,而你的IDEA窗口没有重启,那么在Terminal中使用系统环境变量时,就还是以前的设置,需要重启IDEA才能刷新到新的设置。

这个地方我们修改的是maven的配置,所以我直接对Path进行修改。
在这里插入图片描述
(2)Terminal中校验maven版本
在Terminal中输入mvn -v,查看maven版本是否更改成功。
注意:需要关掉刚才的Terminal窗口,重新打开
在这里插入图片描述
(3)Terminal中打包项目
在Terminal中输入mvn package,查看项目是否打包成功。
在这里插入图片描述
到这里为止,可以看出本次的报错确实与maven版本有关系,我没有去细查,可以确定的是3.8.2版本会报错,而3.6.1及以下的版本不会报错。


原因分析

仔细查看前面maven打包报的错,可以看出错误信息是说:在指定路径下找不到jar包文件。

 The following artifacts could not be resolved:com.sun:tools:jar:1.8, com.sun:jconsole:jar:1.8: 
 Could not find artifact com.sun:tools:jar:1.8 at specified path E:\localDepository\repo\com\alibaba\druid\1.1.21/lib/openjdk-1.8-tools.jar -> [Help 1]

然后我就去这个路径下面找这个文件,报错的这里是一个druid的jar,在这个版本下肯定不可能有/lib/XXX.jar,于是我查看了它的pom文件。
在这里插入图片描述

结论

发现报错的2个jar包都涉及到去读系统变量,由此可以基本得出一个结论,maven3.8.2版本可能会导致系统变量错误读取,从而报错:XXX.jar在指定路径下找不到该文件。
而我们为了日常正常使用呢,有2种办法:
(1)更换maven版本,不要使用3.8.2高版本,使用3.6.1及以下的版本;

(2)在确实需要使用高版本maven时,对于涉及到需要读取System标签的依赖,对报错的jar包进行排除;

<dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.sun</groupId>
                        <artifactId>tools</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun</groupId>
                        <artifactId>jconsole</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

到此结束,如有错误的地方,请大家不吝赐教!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

maven3.8.2版本导致openjdk.jar包报错:Cannot find file 的相关文章

随机推荐

  • 软件测试22种测试方法与详解

    黑盒测试 不基于内部设计和代码的任何知识 而是基于需求和功能性 白盒测试 基于一个应用代码的内部逻辑知识 测试是基于覆盖全部代码 分支 路径 条件 单元测试 最微小规模的测试 以测试某个功能或代码块 典型地由程序员而非测试员来做 因为它需要
  • 用js制作一个视觉差背景

    我在网上冲浪的时候看到了一个文字和背景下滑速度不一致的情况 这看起来背景会有一种3d的感觉 于是研究了一下 首先先写出大概的html和css div class box div class bg div h2 我是一个文字 h2 p 我是一
  • 算法实验题1

    第一题 由1 3 4 5 7 8这6个数字组成六位数中 能被11整除的最大的数是多少 解答 可以使用暴力枚举法 将1 3 4 5 7 8的所有排列组合情况求出来 判断它们是否能被11整除 然后取其中能被11整除的最大值 但是这个方法的时间复
  • 蓝桥杯 第6天 动态规划(4)

    目录 1 121 买卖股票的最佳时机 力扣 LeetCode leetcode cn com 1 暴力解法 2 动态规划 2 122 买卖股票的最佳时机 II 力扣 LeetCode leetcode cn com 3 123 买卖股票的最
  • uni-app 页面样式

    页面样式与布局 尺寸单位 uni app 支持的通用 css 单位包括 px rpx px 即屏幕像素 rpx 即响应式px 一种根据屏幕宽度自适应的动态单位 以750宽的屏幕为基准 750rpx恰好为屏幕宽度 屏幕变宽 rpx 实际显示效
  • C++整数转成二进制方法总结

    经常遇到要用到二进制的情况 这里我就记录下 1 逐次经典位操作 返回一个含有二进制数的vector include
  • 【深度学习之图像理解】图像分类、物体检测、物体分割、实例分割、语义分割的区别

    Directions in the CV 物体分割 Object segment 属于图像理解范畴 那什么是图像理解 Image Understanding IU 领域包含众多sub domains 如图像分类 物体检测 物体分割 实例分割
  • 前端zip.js实现加密打包上传文件

    背景 一方面 部分系统对文件的私密性和安全性要求较高 实现前端加密打包 服务端不存储密码 下载时手动输入密钥并解压文件 另一方面 传输压缩包到客户端 节约了带宽 节约了传输时间 使用的库 zip js Support of the Zip6
  • List写入Excel,poi操作

    前言 公司最近需要将所有的报表导出集中到报表中心系统中 需要做一个通用的Excel工具类 让各个业务系统简单高效的生成Excel报表 由于原先各个业务系统生成报表方式都不一样 有的地方还直接使用了CSV 因此需要统一生成Excel 本来想用
  • Android Studio 可以正常编译运行 但是代码爆红

    这段时间毕设选题 选了一个自己曾经做过的题目 因为之前是用Android Studio2 3 3写的 现在导入Android Studio 3 2 1 代码报错 但是能正常编译运行 很是奇怪 主要报错原因是 找不到有些类 之前用Androi
  • zookeeper(二)——2PC理论、zookeeper集群、ZAB 协议

    一 关于 2PC 提交 Two Phase Commitment Protocol 当一个事务操作需要跨越多个分布式节点的时候 为了保持事务处理的 ACID特性 就需要引入一个 协调者 TM 来统一调度所有分布式节点的执行逻辑 这些被调度的
  • CTFshow php特性 web111

    目录 源码 思路 题解 总结 源码
  • adworld-crypto-banana_princess

    拿到了一个打不开的pdf文件 用hex editor打开一下看看 再看一下正常的pdf文件 猜测是用了rot13映射了一下字母字符 解密脚本 def load data filename content with open filename
  • SpringBoot线程上下文传递数据

    1 底层实现 使用ThreadLocal 使用方法 public T get public void set T value public void remove 2 自定义上下文 package com ybw context confi
  • golang 闭包函数的应用技巧

    一 有名函数和匿名函数 函数变量类型初始值为nil 函数字面量类型的语法表达格式是 func InputTypeList OutputTypeList 无参函数 func fun var f func 无入参无返回值的函数对象声明 初始值为
  • 以太坊教程:入门学习开发以太坊dapp

    一 区块链 1 分布式去中心化 比特币设计的初衷就是要避免依赖中心化的机构 没有发行机构 也不可能操纵发行数量 既然没有中心化的信用机构 在电子货币运行的过程中 也势必需要一种机制来认可运行在区块链上的行为 包括比特币的运营 亦或是运行在区
  • 【pytorch】Module.parameters()函数实现与网络参数管理

    我们知道可以通过Module parameters 获取网络的参数 那这个是如何实现的呢 我先直接看看函数的代码实现 def parameters self r Returns an iterator over module paramet
  • Edge插件之WeTab,画面优美,可以免费使用chatgpt,很难不爱

    目录 一 普通的edge新标签页 二 安装WeTab插件 1 WeTab插件的安装非常简单 只需在百度搜索wetab 进入官网 2 进入官网 点击edge图标 进入插件下载页面 3 这里由于我是已经安装成功 显示的是删除和启动 首次下载的话
  • element-ui el-tooltip 显示导致父元素 hover 失效问题解决

    添加如下css属性 el tooltip popper pointer events none pointer events 属性用于设置元素是否对鼠标事件做出反应 CSS 语法 属性值 pointer events auto 默认值 设置
  • maven3.8.2版本导致openjdk.jar包报错:Cannot find file

    真的吐血了快 又是maven问题 导致项目打包报错 maven问题梅开二度 我醉了呀 问题描述 在idea中使用Terminal终端 对项目进行打包 然后报错 报错信息 ERROR Failed to execute goal on pro