3.15版本poi导致FileMagic文件找不到问题解决过程记录

news2024/10/3 6:32:26

maven中的dependencies和dependencyManagement的区别_shenzhou_yh的博客-CSDN博客

maven 中 dependencies 与 dependencyManagement 的区别_Jaemon的博客-CSDN博客_snapshot dependencies和artifact dependencies的区别

com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/FileMagic
	at com.alibaba.excel.analysis.ExcelAnalyserImpl.<init>(ExcelAnalyserImpl.java:57) ~[easyexcel-2.2.11.jar:na]
	at com.alibaba.excel.ExcelReader.<init>(ExcelReader.java:145) ~[easyexcel-2.2.11.jar:na]
	at com.alibaba.excel.read.builder.ExcelReaderBuilder.build(ExcelReaderBuilder.java:193) ~[easyexcel-2.2.11.jar:na]
	at com.alibaba.excel.read.builder.ExcelReaderBuilder.sheet(ExcelReaderBuilder.java:229) ~[easyexcel-2.2.11.jar:na]
	at com.alibaba.excel.read.builder.ExcelReaderBuilder.sheet(ExcelReaderBuilder.java:217) ~[easyexcel-2.2.11.jar:na]
	//......

在使用 easyexcel 解析表格的时候,出现了这个问题。

定位发现原来是 easyexcel 依赖的 poi 依赖包出了问题。目前项目中导入的版本是 3.15 的,这个版本下的依赖是没有 FileMagic 这个class文件的,所以会出现上述错误。

在这里插入图片描述

网上查阅了相关资料,大家都是建议升级至 3.17 的版本。

于是我手动在引入 easyexcel 的 pom中升级了版本。可是神奇的事情还是发生了,刷新maven之后,拉进来的poi依赖版本还是3.15。

因为目前整个项目是由4个子项目构成的,可能是子项目读取某个依赖里的 poi 的3.15版本。

解决办法

通过在父项目中的 dependencyManagement 标签中显示的声明 poi 的版本,问题得以解决

在这里插入图片描述

dependencyManagement 和 dependencies 区别

dependencies

在多模块工程中,会有一个 父pom 和 多个 子pom 的情况存在。这时候如果在 pom中的 dependencies 定义了某个依赖,那么所有 子pom 都会自动继承这个依赖

子模块中的 pom 可以什么都不做,就会默认从父 pom 中继承所有的依赖。另外子模块也可以使用不同版本的依赖进行覆盖。

dependencyManagement

上面的依赖继承中,父 pom 中定义的依赖,可以直接被子 pom 继承,子 pom 中不用再次声明。这听起来不错,但是仔细想想还是有一些不好的地方:

  • 父pom 定义的依赖,会被所有子模块继承,即使有的模块可能根本不需要这个依赖,这会导致打包后的jar臃肿,甚至有冲突的问题存在。
  • 子模块的 pom 中可以覆盖继承的依赖,这可能导致依赖版本管理出现混乱。

而使用 dependencyManagement 的话,便可以很好的解决上面两个问题:

  • dependencyManagement 中声明的依赖,仅仅是声明,并没有真正的引入依赖。这样子模块可以从声明的依赖中,选择自己需要的,而不会继承所有父 pom 中的依赖。
  • dependencyManagement 中除了声明依赖,还指定了依赖的版本。这样在子模块的依赖中,就无须指定版本,而是使用 dependencyManagement 指定的版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/369546.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ubuntu/linux系统知识(37)systemd管理临时文件的方法systemd-tmpfiles

1、systemd-tmpfiles Linux产生大量的临时文件和目录&#xff0c;例如/tmp、/run 。systemd提供了一个结构化的可配置方法来管理临时文件和目录&#xff0c;即systemd-tmpfiles工具和配套的几个服务&#xff0c;以实现创建、删除和管理临时文件。 systemd创建了几个调用syste…

React(一):初识React、类组件、jsx的基础语法

React&#xff08;一&#xff09;一、初识React1.简单介绍2.React的三个依赖3.Hello React案例二、类组件1.定义类组件并渲染2.绑定事件函数&#xff08;奇怪的this问题&#xff09;3.数组形式数据的展示&#xff08;电影案例&#xff09;4.计数器案例三、jsx语法详解1.jsx的书…

【GUI】用于电动助力车性能分析的GUI(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…

202302-第四周资讯

山川软件愿为您提供最优质的服务。 您的每一个疑问都会被认真对待&#xff0c;您的每一个建议都将都会仔细思考。 我们希望人人都能分析大数据&#xff0c;人人都能搭建应用。 因此我们将不断完善我们的DEMO、文档、以及视频&#xff0c;期望能在最大程度上快速帮助用户快速…

最新OpenMVG编译安装与逐命令运行增量式和全局式SfM教程

openmvg是一个轻便的可以逐步运行的SfM开源库&#xff0c;它同时实现了增量式和全局式两种算法。 说明文档地址&#xff1a;https://openmvg.readthedocs.io/en/latest/ github主页地址&#xff1a;https://github.com/openMVG/openMVG 1 编译安装 openmvg的安装比较简单&…

【centos7下部署mongodb】

一.安装环境 CentOS7MongoDB4.0.13正式版。 二.下载MongoDB 1.1 官网下载地址&#xff1a;https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.13.tgz 1.2 将压缩包通过xftp上传到服务器/opt目录&#xff0c;然后解压、改名 三. 配置环境变量及配置文件 3.1配置系…

8000+字,就说一个字Volatile

简介 volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制&#xff1a;同步块&#xff08;或方法&#xff09;和 volatile 变量&#xff0c;相比于synchronized&#xff08;synchronized通常称为重量级锁&#xff09;&#xff0c;volatile更轻量级&…

2023最新版网络安全保姆级指南,手把手带你从零基础进阶渗透攻防工程师

前言 一份网络攻防渗透测试的学习路线&#xff0c;不藏私了&#xff01; 1、学习编程语言(phpmysqljshtml) 原因&#xff1a; phpmysql可以帮助你快速的理解B/S架构是怎样运行的&#xff0c;只有理解了他的运行原理才能够真正的找到问题/漏洞所在。所以对于国内那些上来就说…

Java实现在线沟通功能

文章目录1、介绍 和 特点2、整合SpringBoot2.1、导入依赖2.2、websocket 配置类2.3、消息处理类2.4、启动服务2.5、前端代码&#xff1a;张三2.6、前端代码&#xff1a;李四3、效果4、小结1、介绍 和 特点 t-io是基于JVM的网络编程框架&#xff0c;和netty属同类&#xff0c;所…

MES系统需求误区,一文告诉你需求分析有哪些

在企业的实际应用中&#xff0c;对MES系统需求的分析常常会出现六个错误。 要求广泛&#xff0c;目标不明确由于对MES系统的概念和企业的实际运作不了解&#xff0c;导致企业在提出MES系统的要求时&#xff0c;常常会笼统而不明确&#xff0c;有时会混淆目标和需要。比如&#…

LabVIEW主VI前面板中显示或使用多个子VI

LabVIEW主VI前面板中显示或使用多个子VI想在程序中连接一个或多个子VI的前面板&#xff0c;但是当调用它们时&#xff0c;每个子VI在计算机屏幕上显示为一个新窗口。那么怎么能让每个子VI作为主VI前面板的一部分进行显示&#xff0c;而不是在屏幕上显示多个窗口&#xff1f;正在…

python读取tif图像+经纬度

python读取tif的包很多&#xff0c;但大都只能读出图像像素值&#xff0c;不能读取到经纬度信息。原因&#xff1a;TIFF 简单理解就是一种图像格式&#xff0c;类似于 jpg、png 等。GeoTIFF 就是在普通 TIFF 文件上增加了地理位置、投影信息、坐标信息等&#xff0c;常用于遥感…

BBS系统的设计与实现

技术&#xff1a;Java、JSP等摘要&#xff1a;BBS全称为Bulletin Board System&#xff0c;中文就是“电子公告板”。 BBS是一种电子信息服务系统。它向用户提供了一块公共电子白板&#xff0c;每个用户都可以在上面发布信息或提出问题&#xff0c;早期的BBS由教育机构或研究机…

电脑硬盘如何重新分区 ?教你两招磁盘分区方法

摘要&#xff1a;对于刚刚购买的电脑来说&#xff0c;有些厂商在装机的时候没有根据用户需求&#xff0c;就给硬盘随意分区了&#xff0c;有的分区划分的不是很合理&#xff0c;在使用过程中会遇到一些麻烦&#xff0c;那么电脑硬盘如何重新分区 &#xff1f;本文将给大家详细介…

OpenShift 简介

OpenShift 是红帽 Red Hat 公司基于开源的云平台&#xff0c;是平台即服务&#xff08;PaaS&#xff09;&#xff0c;是一种容器应用平台。允许开发人员构建、测试和部署云应用。该系统是在 K8S 核心之上添加工具&#xff0c;从而实现更快的应用开发、部署及扩展。 在 OpenShi…

leetcode 1675. Minimize Deviation in Array(最小化数组偏差)

数组里面有n个正整数&#xff0c;里面的数字可以无限次进行如下操作&#xff1a; 1.偶数可以除以2 2.奇数可以乘以2 数组中任意两元素差的最大值称为偏差。 把数组中的元素进行上面2种操作&#xff0c;使偏差最小。 思路&#xff1a; 数组中现有2种数字&#xff0c;一种是奇数…

新手如何入门黑客技术,黑客技术入门该学什么?

你是否曾经也对黑客技术感兴趣呢&#xff1f;感觉成为黑客是一件很酷的事&#xff0c;那么作为新手如何入门黑客技术&#xff0c;黑客技术入门该学什么呢&#xff1f; 其实不管你想在哪个新的领域里有所收获&#xff0c;你需要考虑以下几个问题。 首先你要想明白为什么学这个&…

程序员是世界上最理性、最睿智的群体,耶稣也反驳不了我,我说的!

有人说&#xff0c;程序员是吃青春饭的&#xff0c;35 岁就提前退休了。 猛一看&#xff0c;这句话是对的&#xff1b;仔细一看&#xff0c;这句话是不对的。 说它对&#xff0c;是因为现实中确实有很多程序员 35 岁就被毕业了&#xff1b;说它不对&#xff0c;是因为 35 岁以…

【数据库】redis集群环境详解

目录 集群环境 一&#xff0c;集群介绍 1、为什么需要redis集群 2、什么是redis集群 二&#xff0c;数据分片 三&#xff0c; 主从复制模型 四&#xff0c;一致性保证 五&#xff0c;集群搭建 1&#xff0c; 集群结构 2&#xff0c;创建配置文件 &#xff08;1&#…

播放器问答弹题功能(视频播放弹出问题)教程与实际演示案例

阿酷tony / 原创 / 2023-2-24 长沙问答弹题功能是指酷播云产品在视频播放的指定时间点弹出问答题目&#xff0c;适合在教学、培训类视频中使用。使用问答功能&#xff0c;既可以增加学生与内容的互动&#xff0c;有利于教学质量的提升&#xff0c;又可以评估学生的学习效果和课…