什么会导致java.lang.NoClassDefFoundError错误?

9
我想要读取Excel文件,但是出现了问题。
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlObject
 at ExcelReader.main(ExcelReader.java:32)
Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlObject
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more

请帮助我。 首先打开.xlsx文件,然后给出第一个表格。 最后在控制台上打印excel文件的数据。 提示:我已经将poi-ooxml-3.9-20121203.jar添加到我的项目中。

    import java.io.File;
    import java.io.FileInputStream;
    import javax.swing.text.html.HTMLDocument.Iterator;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import java.util.*;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    /**
     * @author mohammad hosein
    *
    */
    public class ExcelReader {

/**
 * @param args
 */
public static void main(String[] args) {
    try
    {
    FileInputStream file = new FileInputStream(new File("E:\\test.xlsx"));

    //Get the workbook instance for XLS file 
    XSSFWorkbook workbook = new XSSFWorkbook (file);

    //Get first sheet from the workbook
    XSSFSheet sheet = workbook.getSheetAt(0);

    //Get iterator to all the rows in current sheet
    java.util.Iterator<Row> rowIterator = sheet.iterator();

    while(rowIterator.hasNext())
    {
        Row row = rowIterator.next();
        java.util.Iterator<Cell> cellIterator = row.cellIterator();

        while(cellIterator.hasNext())
        {
            Cell cell = cellIterator.next();
            System.out.print(cell.getStringCellValue() + "\t");
        }
        System.out.println("");
    }
    }
    catch(Exception e)
    {
        System.out.println("EROR!");
    }

    //Get iterator to all cells of current row

}

}


1
请问您能否发布错误堆栈跟踪? - Rohan
请发布您的“异常”代码片段。 - kark
请使用搜索功能。这个问题已经被问了数百甚至数千次。 - Woot4Moo
可能是令人恐惧的java.lang.NoClassDefFoundError 的重复问题,https://dev59.com/sXE95IYBdhLWcg3wm_Mu在Eclipse中出现奇怪的java-lang-noclassdeffounderror,https://dev59.com/x1bTa4cB1Zd3GeqP6wEm - Woot4Moo
12个回答

0

在您的构建路径中添加xmlbeans-2.3.0.jar。这是xlsx所需的。


0

就我所了解的关于这个问题的任何评论,我已经找到了使我的代码运行时不出现“java.lang.NoClassDefFoundError”错误的步骤:

  1. 手动将以下库添加到您的类路径中:

    poi-ooxml-full-5.2.0.jar

    poi-ooxml-schemas-3.15.0.jar

  2. 将以下依赖项添加到您的pom.xml中:

    poi (5.1.0) from (org.apache.poi)

    poi-ooxml (5.1.0) from (org.apache.poi)

    log4j-core (2.16.0) from (org.apache.logging.log4j)

    log4j-api (2.17.1) from (org.apache.logging.log4j)

我在Intellij IDEA 2021下使用的版本是可以正常工作的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接