43

我收到以下错误

线程“main”中的异常 java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlObject at OrderBook.WriteToExcelSheet.CreateOutPutFile(WriteToExcelSheet.java:20) at OrderBook.MainMethod.main(MainMethod.java:71)

我在网上查找了这个错误的原因,但找不到我得到它的原因。

我已包含以下 jar 文件

poi-3.9-20121203.jar, 
poi-excelant-3.9-20121203.jar,
poi-examples-3.9-20121203.jar,
poi-ooxml-3.9-20121203.jar,
poi-ooxml-schemas-3.9-20121203.jar,
poi-scratchpad-3.9-20121203.jar

代码:

public class WriteToExcelSheet {
    public static Map < Integer, Object[] > data = new TreeMap < Integer, Object[] > ();
    public static void CreateOutPutFile() {
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet("Orderbook Stats");
        //This data needs to be written (Object[])
        //Iterate over data and write to sheet
        Set < Integer > keyset = data.keySet()
        int rownum = 0;
        for (Integer key: keyset) {
            Row row = sheet.createRow(rownum++);
            Object[] objArr = data.get(key);
            int cellnum = 0;
            for (Object obj: objArr) {
                Cell cell = row.createCell(cellnum++);
                if (obj instanceof String) cell.setCellValue((String) obj);
                else if (obj instanceof Integer) cell.setCellValue((Integer) obj);
            }
        }
        try {
            //Write the workbook in file system
            System.out.println("OutPutStats.xlsx writing..............................");
            FileOutputStream out = new FileOutputStream(new File("FileLocation/o.xlxs"));
            workbook.write(out);
            out.close();
            System.out.println("OutPutStats.xlsx written successfully on disk.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}    
4

8 回答 8

92

你必须再包括一个罐子。

xmlbeans-2.3.0.jar

添加这个并尝试。

注意:仅 .xlsx 格式的文件需要它,而不仅仅是 .xls 格式的文件。

于 2013-11-02T04:50:39.883 回答
4

您必须包含另外两个 jar 文件。

xmlbeans-2.3.0.jar 和 dom4j-1.6.1.jar 添加试试就行了。

注意:仅 .xlsx 格式的文件需要它,而不仅仅是 .xlt 格式的文件。

于 2015-07-05T08:25:18.570 回答
2

当尝试翻译带有 .xlsx 后缀的 Excel 文件时,您需要添加额外的 jar,xmlbeansxxx.jar。xxxx 是版本,例如xmlbeans-2.3.0.jar

于 2013-11-02T04:52:17.583 回答
1

对于您添加 xmlbeans-2.3.0.jar 并且它不起作用的所有内容,您必须在添加 jar 后使用 HSSFWorkbook 而不是 XSSFWorkbook。例如;

    Workbook workbook = new HSSFWorkbook();
    Sheet listSheet = workbook.createSheet("Kişi Listesi");

    int rowIndex = 0;
    for (KayitParam kp : kayitList) {
        Row row = listSheet.createRow(rowIndex++);
        int cellIndex = 0;
        row.createCell(cellIndex++).setCellValue(kp.getAd());
        row.createCell(cellIndex++).setCellValue(kp.getSoyad());
        row.createCell(cellIndex++).setCellValue(kp.getEposta());
        row.createCell(cellIndex++).setCellValue(kp.getCinsiyet());
        row.createCell(cellIndex++).setCellValue(kp.getDogumtarihi());
        row.createCell(cellIndex++).setCellValue(kp.getTahsil());
    }

    try {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        workbook.write(baos);
        AMedia amedia = new AMedia("Kisiler.xls", "xls",
                "application/file", baos.toByteArray());
        Filedownload.save(amedia);
        baos.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
于 2015-02-05T09:51:44.527 回答
1

您需要包含 xmlbeans-xxx.jar,如果您已下载 POI 二进制 zip,您将在 ooxml-lib 文件夹中获得 xmlbeans-xxx.jar(例如:\poi-3.11\ooxml-lib)

此 jar 用于适用于 .xlsx 文件的 XML 绑定。

于 2015-04-29T10:47:57.127 回答
1

我遇到了类似的情况,所以我替换了所有外部 jar 文件(poi-bin-3.17-20170915)并确保添加jar了 lib 和ooxml-lib文件夹中存在的其他文件。

希望这可以帮助!!!:)

于 2018-07-31T10:14:25.007 回答
0

我正在使用 talend V7.3.1,并且我有 poi 版本“4.1.0”,并且从依赖项列表中包含 xml-beans 并没有解决我的问题(即:2.3.0 和 2.6.0)。

It was fixed by downloading the jar "xmlbeans-3.0.1.jar" and adding it to the project

在此处输入图像描述

于 2021-02-25T13:51:22.907 回答
-1

在类路径中找不到类时抛出 ClassNotFoundException。添加以下jar(包含XmlObject接口的定义)将解决问题

xmlbeans-x.y.z.jar

您可以在以下链接下载最新的 xmlbeans jar 文件 https://xmlbeans.apache.org/download/index.html

如果您正在使用 apache poi 库,请确保在 lib 和 ooxml-lib 文件夹中添加 jar。

于 2021-03-27T07:42:25.783 回答