线程“main”中的异常 java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/2673237/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-13 10:38:28  来源:igfitidea点击:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException

java

提问by Dheeraj kumar

I have to read xls file in java.I used poi-3.6 to read xls file in Eclipse.But i m getting this ERROR"Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException at ReadExcel2.main(ReadExcel2.java:38)".

我必须在 java.I 中读取 xls 文件。我使用 poi-3.6 在 Eclipse 中读取 xls 文件。但我在线程“main”中收到此错误”异常 java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException at ReadExcel2.main (ReadExcel2.java:38)"。

I have added following jars 1)poi-3.6-20091214.jar 2)poi-contrib-3.6-20091214.jar 3)poi-examples-3.6-20091214.jar 4)poi-ooxml-3.6-20091214.jar 5)poi-ooxml-schemas-3.6-20091214.jar 6)poi-scratchpad-3.6-20091214.jar

我添加了以下 jar 1)poi-3.6-20091214.jar 2)poi-contrib-3.6-20091214.jar 3)poi-examples-3.6-20091214.jar 4)poi-ooxml-3.6-20091214.jar -ooxml-schemas-3.6-20091214.jar 6)poi-scratchpad-3.6-20091214.jar

Below is the code which i m using:

下面是我使用的代码:

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;
public class ReadExcel {

    public static void main(String[] args) throws Exception {
        //
        // An excel file name. You can create a file name with a full path
        // information.
        //
        String filename = "C:\myExcel.xl";
        //
        // Create an ArrayList to store the data read from excel sheet.
        //
        List sheetData = new ArrayList();

        FileInputStream fis = null;
        try {
            //
            // Create a FileInputStream that will be use to read the excel file.
            //
            fis = new FileInputStream(filename);

            //
            // Create an excel workbook from the file system.
            //
           // HSSFWorkbook workbook = new HSSFWorkbook(fis);
            Workbook workbook = new XSSFWorkbook(fis);  

            //
            // Get the first sheet on the workbook.
            //
            Sheet sheet = workbook.getSheetAt(0);

            //
            // When we have a sheet object in hand we can iterator on each
            // sheet's rows and on each row's cells. We store the data read
            // on an ArrayList so that we can printed the content of the excel
            // to the console.
            //
            Iterator rows = sheet.rowIterator();
            while (rows.hasNext()) {
                Row row = (XSSFRow) rows.next();
                Iterator cells = row.cellIterator();

                List data = new ArrayList();
                while (cells.hasNext()) {
                    Cell cell = (XSSFCell) cells.next();
                    data.add(cell);
                }

                sheetData.add(data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fis != null) {
                fis.close();
            }
        }

        showExelData(sheetData);
    }
    private static void showExelData(List sheetData) {
        //
        // Iterates the data and print it out to the console.
        //
        for (int i = 0; i < sheetData.size(); i++) {
            List list = (List) sheetData.get(i);
            for (int j = 0; j < list.size(); j++) {
                Cell cell = (XSSFCell) list.get(j);
                System.out.print(cell.getRichStringCellValue().getString());
                if (j < list.size() - 1) {
                    System.out.print(", ");
                }
            }
            System.out.println("");
        }
    }
}

Please help. thanks in anticipation, Regards, Dheeraj!

请帮忙。感谢期待,问候,Dheeraj!

采纳答案by Bozho

You need xmlbeanson your classpath.

您的类路径上需要xmlbeans

NoClassDefFoundErrormeans that:

NoClassDefFoundError意思是:

The searched-for class definition existed when the currently executing class was compiled, but the definition can no longer be found.

编译当前正在执行的类时,搜索到的类定义存在,但无法再找到该定义。

So next time you get an exception like this, it means that some 3rd party library requires another 3rd party library. Then use google (or any other means) to find which library this is. Furthermore, most libraries state clearly in their documentations and/or distributions what are their dependencies.

所以下次你遇到这样的异常时,这意味着某些 3rd 方库需要另一个 3rd 方库。然后使用谷歌(或任何其他方式)查找这是哪个库。此外,大多数库在其文档和/或发行版中明确说明了它们的依赖关系。

回答by Manrico Corazzi

JarFindersuggests XMLBeans.jar

JarFinder建议使用 XMLBeans.jar

回答by user3702869

Had the same error on Apache POI 3.16. Added the following jars from Apache POI /ooxml-lib/xmlbeans-2.6.0 and for the next exception regarding collections /lib/commons-collections4-4.1.jar to fix.

在 Apache POI 3.16 上有同样的错误。添加了来自 Apache POI /ooxml-lib/xmlbeans-2.6.0 的以下 jars,并为下一个关于集合的异常 /lib/commons-collections4-4.1.jar 添加了修复。