使用poi-3.8 jar包 异常

每次执行 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包删了 重新引入