当Excel处理神器EasyExcel遇上Apache POI:一场关于依赖的趣味‘撞车’冒险

 

目录

前言

报错 

解决思想 

 解决方案

结尾 

前言

🎈🎈🎈"Hey there, 大家好!我是Blue,今天可不是一般的‘代码奇遇记’!我在与EasyExcel这位数据处理界的魔术师共舞时,突然遭遇了前所未有的‘魔法失灵’!那场面,简直是程序员版的《哈利·波特》遇上‘魔法消失’的尴尬。不过别担心,我这个侦探Blue可不是吃素的,经过一番抽丝剥茧,外加一点点编程界的‘魔法药水’——其实就是深思熟虑和耐心调试,嘿嘿,问题终于被我这个大侦探给揪出来了,还顺手给它来了个漂亮的‘修复术’!现在,EasyExcel又愉快地为我服务,仿佛什么都没发生过一样。所以说,遇到代码难题别慌张,咱们都是编程界的小小探险家嘛!"🎈🎈🎈

报错 

com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoaderat com.alibaba.excel.analysis.ExcelAnalyserImpl.<init>(ExcelAnalyserImpl.java:57)at com.alibaba.excel.ExcelReader.<init>(ExcelReader.java:145)at com.alibaba.excel.read.builder.ExcelReaderBuilder.build(ExcelReaderBuilder.java:193)at com.alibaba.excel.read.builder.ExcelReaderBuilder.sheet(ExcelReaderBuilder.java:229)at com.alibaba.excel.read.builder.ExcelReaderBuilder.sheet(ExcelReaderBuilder.java:217)at com.example.jishedemo1.Worldtext.test6(Worldtext.java:139)at java.base/java.lang.reflect.Method.invoke(Method.java:568)at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoaderat org.openxmlformats.schemas.spreadsheetml.x2006.main.WorkbookDocument$Factory.parse(Unknown Source)at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.analysisUse1904WindowDate(XlsxSaxAnalyser.java:117)at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.<init>(XlsxSaxAnalyser.java:79)at com.alibaba.excel.analysis.ExcelAnalyserImpl.choiceExcelExecutor(ExcelAnalyserImpl.java:99)at com.alibaba.excel.analysis.ExcelAnalyserImpl.<init>(ExcelAnalyserImpl.java:51)... 8 more
Caused by: java.lang.ClassNotFoundException: org.apache.poi.POIXMLTypeLoaderat java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)... 13 more

解决思想 

嘿,小伙伴们,我碰到了个挺逗的事儿!我在审查我的Java代码时,眼睛一瞪,发现了一行刺眼的错误提示:java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader。这简直就像是在告诉我,我的应用小伙伴在派对上突然找不到它的舞伴Apache POI库里的POIXMLTypeLoader类了!但让我百思不得其解的是,我明明记得这场派对(也就是我的项目)并没有邀请Apache POI这位嘉宾啊!它怎么就不请自来了,还搞出了这么一出‘失踪案’?

好奇心驱使下,我像是侦探附体,决定揭开这个谜团。于是,我转身向智慧的‘文心一言’求助,就像是对着魔法水晶球提问一样,希望它能给我指点迷津。我心想,或许这背后隐藏着什么不为人知的依赖秘密,或者是某个调皮的库悄悄拉来了Apache POI当助手,而我还被蒙在鼓里呢!这次经历,真是让我对Java世界的复杂性和趣味性又多了几分敬畏呢!根据文心一言的提示(如下图)

依赖冲突?说起依赖冲突,我脑袋里的小灯泡突然一亮!既然easyexcel和Apache POI这两个库都是咱们处理Excel、Word这些文档的得力助手,我琢磨着,它们之间会不会有啥亲戚关系呢?就像是厨师和他的厨房工具,一个高手级的厨师(easyexcel)可能就是在普通厨具(Apache POI)的基础上,打造出了自己的一套专属神器。

我好奇地翻阅了easyexcel的官网,还特意在百度上搜罗了一番,嘿,还真让我发现了端倪!原来,easyexcel这位‘大厨’确实是站在Apache POI这位‘老前辈’的肩膀上成长起来的。换句话说,easyexcel在开发时就已经深深打上了poi的烙印,它内部就自带了poi的依赖,就像做菜时必不可少的调料一样(看下图就明白了)。这下子,依赖冲突的问题就变得豁然开朗了,原来它们是一家人嘛!

那么问题就解决了,我在项目中即使用了poi,又使用了easyexcel,此时同时使用就会造成依赖冲突。 那么问题就是如何解决依赖冲突喏!

 解决方案

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel-core</artifactId><version>自己的版本</version><exclusions><exclusion><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId></exclusion><exclusion><groupId>org.apache.poi</groupId><artifactId>poi</artifactId></exclusion><exclusion><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId></exclusion></exclusions></dependency>

结尾 

🎈🎈🎈🎈"衷心希望本篇详尽而深入的文章能够成为您探索之旅中的一盏明灯,不仅解答您当前的疑惑,更能激发您对技术领域的无限热情与好奇心。我们力求通过每一个字、每一句话,为每一位读者搭建起一座知识的桥梁,让您在技术的海洋中航行时更加从容不迫,收获满满。无论是初学者还是资深开发者,相信都能从本文中找到对自己有所助益的宝贵信息,共同进步,携手前行。"🎈🎈🎈🎈

 

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

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

相关文章

Unity-URP-SSAO记录

勾选After Opacity Unity-URP管线&#xff0c;本来又一个“bug”, 网上查不到很多关于ssao的资料 以为会不会又是一个极度少人用的东西 而且几乎都是要第三方替代 也完全没有SSAO大概的消耗是多少&#xff0c;完全是黑盒(因为用的人少&#xff0c;研究的人少&#xff0c;优…

解决GoLand添加GOROOT提示The selected directory is not a valid home for Go Sdk的问题

现象 解决 在Go安装路径下找到zversion.go文件&#xff0c;我的在D:\Program Files\Go1.21.1\src\runtime\internal\sys下面 打开文件&#xff0c;添加如下内容&#xff1a; const TheVersion go1.21.1保存后再重新添加GOROOT即可

Python莫兰生死抑制放大进化图

&#x1f3af;要点 &#x1f3af;种群离散时间莫兰生死动态图解 | &#x1f3af;良好混合种群的固定概率 | &#x1f3af;数值求解生成埃尔多斯-雷尼图 | &#x1f3af;计算马尔可夫链的转移矩阵概率 | &#x1f3af;出生死亡动态和死亡出生动态概率无向随机图和有向随机图&am…

react Jsx基础概念和本质

什么是jsx jsx是JavaScript和XML(HTML)的缩写&#xff0c;表示在js代码中编写HTML模板结构&#xff0c;它是react中编写UI模板的方式 const message this is message function App(){return (<div><h1>this is title</h1>{message}</div>) } jsx优…

Mike she中常出现的error及解决办法

前言&#xff1a; 最近用了下MIKE SHE坡面流模块&#xff0c;感觉一场雨降下来和MIKESHE和MIKE21模块算出来还是有不一样的地方&#xff0c;这个先不聊&#xff0c;聊点直接的&#xff0c;到底一个玩个模块遇到了哪些错误&#xff0c;我们来说说解决方法。 Error1&#xff1a;…

嵌入式人工智能(16-基于树莓派4B的电机控制-步进电机28BYJ-48)

1、步进电机 步进电机是一种旋转电机&#xff0c;通过在特定的步进角度内进行转动来实现精确的定位控制。步进电机通常由电磁线圈和磁轴组成&#xff0c;线圈通过电流激励产生磁场&#xff0c;而磁轴则受到线圈所产生的磁场的作用而转动。 步进电机的运动是离散的&#xff0c;…

el-select选择器修改背景颜色

<!--* FilePath: topSearch.vue* Author: 是十九呐* Date: 2024-07-18 09:46:03* LastEditTime: 2024-07-18 10:42:03 --> <template><div class"topSearch-container"><div class"search-item"><div class"item-name&quo…

野兔在线工具箱系统全新升级改版,基于TP8和yetuadmin后台实现

野兔在线工具箱系统全新升级改版&#xff0c;基于TP8和yetuadmin后台实现 系统名称&#xff1a;野兔在线工具系统 系统语言&#xff1a;支持多语言&#xff0c;大概有20种 系统源码&#xff1a;不加密&#xff0c;开源 系统开发&#xff1a;PHPMySQL (基于thinkphp8&#x…

linux内核中list的基本用法

内核链表 1 list_head 结构 为了使用链表机制&#xff0c;驱动程序需要包含<linux/types.h>头文件&#xff0c;该文件定义了如下结构体实现双向链&#xff1a; struct list_head {struct list_head *next, *prev; };2 链表的初始化 2.1 链表宏定义和初始化 可使用以…

无刷电机数学模型建立之——克拉克变换

前言 MOS管如何驱动无刷电机&#xff0c;请参考如下链接 无刷电机概念与原理 一、FOC流程图 二、FOC的过程是输入需求的电机力矩&#xff0c;最后把需求的电机力矩转换为三相线的电力输出&#xff0c;并且让电机旋转物理上输出需求的力矩的过程&#xff0c;这也称为电机控制三…

钡铼分布式I/O系统边缘计算Modbus,MQTT,OPC UA耦合器BL206

BL206系列耦合器是一个数据采集和控制系统&#xff0c;基于强大的32 位微处理器设计&#xff0c;采用Linux操作系统&#xff0c;支持Modbus&#xff0c;MQTT&#xff0c;OPC UA协议&#xff0c;可以快速接入现场PLC、DCS、PAS、MES、Ignition和SCADA以及ERP系统&#xff0c;同时…

通过vue3 + TypeScript + uniapp + uni-ui 实现下拉刷新和加载更多的功能

效果图: 核心代码: <script lang="ts" setup>import { ref, reactive } from vue;import api from @/request/api.jsimport empty from @/component/empty.vueimport { onLoad,onShow, onPullDownRefresh, onReachBottom } from @dcloudio/uni-applet form …

【Android】Activity的生命周期

Activity的生命周期 1.返回栈 其实Android是使用任务&#xff08;task&#xff09;来管理Activity的&#xff0c;一个任务就是一组存放在栈里的Activity的集合&#xff0c;这个栈也被称作返回栈&#xff08;back stack&#xff09;。栈是一种后进先出的数据结构&#xff0c;在…

AES算法概述

文章目录 一、AES 概述二、AES 加密算法的特点三、秘钥类型四、填充方式五、加密方式 一、AES 概述 二、AES 加密算法的特点 AES加密的数据块长度为128&#xff08;16字节&#xff09;&#xff0c;长度不足需要填充。密码长度可以为16,24,32字节。 三、秘钥类型 AES加密按秘…

【C++高阶】精通AVL树:全面剖析与深度学习

目录 &#x1f680; 前言一&#xff1a; &#x1f525; AVL树的性质二&#xff1a; &#x1f525; AVL树节点的定义三&#xff1a; &#x1f525; AVL树的插入四&#xff1a; &#x1f525; AVL树的平衡调整&#xff08;附动图&#xff09; 五&#xff1a;&#x1f525; AVL树的…

c++初阶篇(三):内联函数及auto关键字

1.内联函数 1.1 概念 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方展开&#xff0c;没有函数调 用建立栈帧的开销&#xff0c;内联函数提升程序运行的效率。 如果在上述函数前增加 inline 关键字将其改成内联函数&#xff0c;在编译期间编…

RNN循环递归网络讲解与不掉包python实现

这里写目录标题 1.算法简介2. RNN算法原理2.1 RNN基本结构介绍2.2 计算流程 3.完整训练代码 1.算法简介 参考论文&#xff1a;Elman J L. Finding structure in time[J]. Cognitive science, 1990, 14(2): 179-211.&#xff0c;谷歌被引次数超16000! 说到循环递归结构就不得不…

秒杀案例-分布式锁Redisson、synchronized、RedLock

模拟秒杀 源码地址前期准备创建数据库表导入数据dependenciespomControllerTSeckillProductTseckillProductServiceTseckillProductServiceImplTseckillProductMapperTseckillProductMapper.xml使用JMeter压力测试开始测试超卖现象原因解决办法更改数据库库存500进行JMeter压力…

运维锅总详解Kubernetes之Kubelet

本文尝试从Kubelet的发展历史、实现原理、交互逻辑、伪代码实现及最佳实践5个方面对Kubelet进行详细阐述。希望对您有所帮助&#xff01; 一、kubelet发展历史 Kubelet 是 Kubernetes 中的核心组件之一&#xff0c;负责管理单个节点上的容器运行。它的发展历史和功能演进是 Kub…

【LeetCode】222. 完全二叉树的个数

什么是计算机基础&#xff1f;如果本题能够用二分二进制二叉树的方式解出本题&#xff0c;那么我可以认为你的计算机基础就很好了。很久以来&#xff0c;我一直认为自己的计算机基础好&#xff0c;但是自刷题以来&#xff0c;跟网上这么多优秀的同学相比&#xff0c;我发现我实…