每次执行 XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(path)); 都会报 java.lang.NoClassDefFoundError 什么原因?包已经导入
可以参考,本篇文章解决
首先检查你的依赖:
如果是Gradle 项目,添加如下依赖:
// Apache POI
// https://mvnrepository.com/artifact/org.apache.poi/poi
implementation group: 'org.apache.poi', name: 'poi', version: '4.1.2'
// https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml
implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '4.1.2'
// https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas
implementation group: 'org.apache.poi', name: 'poi-ooxml-schemas', version: '4.1.2'
如果是mavne项目,添加如下依赖:
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.1.2</version>
</dependency>
更多见:Apache POI 中文使用指南 https://xingyun.blog.csdn.net/article/details/113859228
https://blog.csdn.net/jamesjxin/article/details/46606307
编译代码之后,程序中每个类的.class文件就结束了。这些二进制文件是Java解释以执行程序的字节码。NoClassDefFoundError表示类加载器(在本例中是java.net.URLClassLoader),它负责动态加载类,无法找到您试图使用的类的.class文件。
如果没有必需的类,您的代码将无法编译(除非用反射加载类),因此通常这种异常意味着您的类路径不包括必需的类。请记住,类加载器(特别是java.net.URLClassLoader)将在类路径中的每个条目中查找a/b/c文件夹中的a.b.c包中的类。NoClassDefFoundError还可以指示您丢失了已编译并试图使用的.jar文件的传递依赖项。
例如,如果你有一个类com.example。编译之后,你会得到一个类文件Foo.class。例如,你的工作目录是…/project/。类文件必须放在…/project/com/example,然后将类路径设置为…/project/。
边注:我建议利用为Java和JVM语言而存在的令人惊叹的工具。现代IDE如Eclipse、IDEA和Maven或Gradle等构建管理工具将帮助你不必担心类路径,而是专注于代码!也就是说,这个链接解释了在命令行上执行时如何设置类路径。
1.clean一下项目,重新build一下
2.找到导入的jar包删了 重新引入