当前位置: 首页 > news >正文

当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>

结尾 

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

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • swift小知识点(二)
  • 使用APEXSQL LOG解析sql server事务日志,进行审计与数据恢复
  • 手撕排序算法:冒泡排序
  • GPT-5一年半后发布
  • 【Linux】编辑器vscode与linux的联动
  • 通过 Nginx 修复 CORS 漏洞
  • Web3D:WebGL为什么在渲染性能上输给了WebGPU。
  • Mysql集合转多行
  • 更加深入Mysql-04-MySQL 多表查询与事务的操作
  • 2024.7.20 暑期训练记录(6)
  • pytest钩子hook使用2
  • Webpack详解
  • 网络抓包工具tcpdump的使用
  • 持续集成03--Jenkins的安装与配置
  • 【AI工具基础】—B树(B-tree)
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • angular学习第一篇-----环境搭建
  • exif信息对照
  • JavaScript函数式编程(一)
  • laravel 用artisan创建自己的模板
  • mac修复ab及siege安装
  • oldjun 检测网站的经验
  • orm2 中文文档 3.1 模型属性
  • underscore源码剖析之整体架构
  • 理清楚Vue的结构
  • 聊一聊前端的监控
  • 思考 CSS 架构
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # .NET Framework中使用命名管道进行进程间通信
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #android不同版本废弃api,新api。
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (13)DroneCAN 适配器节点(一)
  • (八)c52学习之旅-中断实验
  • (二十三)Flask之高频面试点
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (三)c52学习之旅-点亮LED灯
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)Scala的“=”符号简介
  • (转)负载均衡,回话保持,cookie
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • *上位机的定义
  • .NET 依赖注入和配置系统
  • .NET/C# 的字符串暂存池
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET的数据绑定
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET框架设计—常被忽视的C#设计技巧
  • .NET运行机制
  • :not(:first-child)和:not(:last-child)的用法