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

 

目录

前言

报错 

解决思想 

 解决方案

结尾 

前言

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

报错 

com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader

	at 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/POIXMLTypeLoader
	at 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.POIXMLTypeLoader
	at 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>

结尾 

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

 

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 18:10:02       101 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 18:10:02       109 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 18:10:02       87 阅读
  4. Python语言-面向对象

    2024-07-21 18:10:02       96 阅读

热门阅读

  1. Redis的过期删除策略与内存淘汰机制

    2024-07-21 18:10:02       25 阅读
  2. vivado INTERNAL_VREF

    2024-07-21 18:10:02       23 阅读
  3. 商品价格中也有“歧视”

    2024-07-21 18:10:02       25 阅读
  4. Unity3D UGUI适配不同分辨率详解

    2024-07-21 18:10:02       26 阅读
  5. 【Flask项目】文件分享系统(二)

    2024-07-21 18:10:02       22 阅读
  6. Spring框架中的设计模式:深入剖析

    2024-07-21 18:10:02       23 阅读
  7. 小程序发布流程?

    2024-07-21 18:10:02       20 阅读
  8. 软链接跟硬链接有什么区别

    2024-07-21 18:10:02       23 阅读
  9. 轻量级实现swiper造轮子思路

    2024-07-21 18:10:02       21 阅读
  10. 用 AI 来学习雅思英语写作

    2024-07-21 18:10:02       18 阅读
  11. 数据库-表的约束

    2024-07-21 18:10:02       21 阅读
  12. Python基本语法

    2024-07-21 18:10:02       26 阅读
  13. GPU算力租用平台推荐

    2024-07-21 18:10:02       27 阅读