![](/img/trans.png)
[英]java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlOptions
[英]java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlObject Error
我收到以下錯誤
線程“main”中的異常 java.lang.NoClassDefFoundError:OrderBook.WriteToExcelSheet.CreateOutPutFile(WriteToExcelSheet.java:20) 處的 org/apache/xmlbeans/XmlObject 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();
}
}
}
你必須再包括一個罐子。
xmlbeans-2.3.0.jar
添加這個並嘗試。
注意:僅 .xlsx 格式的文件需要它,而不僅僅是 .xls 格式的文件。
您必須包含另外兩個 jar 文件。
xmlbeans-2.3.0.jar 和 dom4j-1.6.1.jar 添加試試就行了。
注意:僅 .xlsx 格式的文件需要它,而不僅僅是 .xlt 格式的文件。
嘗試翻譯帶有 .xlsx 后綴的 Excel 文件時,您需要添加額外的 jar,xmlbeansxxx.jar。 xxxx為版本,如xmlbeans-2.3.0.jar
對於所有添加 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();
}
您需要包含 xmlbeans-xxx.jar,如果您已經下載了 POI 二進制 zip,您將在 ooxml-lib 文件夾中獲得 xmlbeans-xxx.jar(例如:\\poi-3.11\\ooxml-lib)
此 jar 用於 XML 綁定,適用於 .xlsx 文件。
我遇到了類似的情況,所以我替換了所有外部 jar 文件( poi-bin-3.17-20170915
)並確保添加 lib 和ooxml-lib
文件夾中存在的其他jar
文件。
希望這可以幫助!!!:)
如果以正確的方式執行此操作,則需要創建一個 maven 項目並將所有依賴項放入pom.xml
文件中,maven 的依賴項您可以谷歌,例如: https://mvnrepository.com/artifact/org.apache.poi/點/5.0.0 ?
如果要采用這種硬核方式,請下載 POI 庫二進制文件並添加所有文件夾(對於 POI 5.0.0)中的所有.jar
文件,這是(輔助、ooxml-lib、lib)文件夾和根目錄。 就我而言,如果您不想弄清楚哪個庫與什么相關,它就可以工作。
像這樣的東西:
當在類路徑中找不到類時,會拋出 ClassNotFoundException。 添加如下jar(包含XmlObject接口的定義)即可解決問題
xmlbeans-x.y.z.jar
您可以通過以下鏈接下載最新的 xmlbeans jar 文件https://xmlbeans.apache.org/download/index.html
如果您正在使用 apache poi 庫,請確保在 lib 和 ooxml-lib 文件夾中添加 jar。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.