java.lang.ClassNotFoundException:org.apache.xmlbeans.XmlObject错误
我得到以下错误 线程“main”java.lang.NoClassDefFoundError中出现异常:org/apache/xmlbeans/XmlObject 在OrderBook.WriteToExcelSheet.CreateOutPutFile(WriteToExcelSheet.java:20)中 位于OrderBook.MainMethod.main(MainMethod.java:71) 我在网上查找了这个错误的原因,但找不到为什么我会得到它 我已经包括了以下jar文件java.lang.ClassNotFoundException:org.apache.xmlbeans.XmlObject错误,java,Java,我得到以下错误 线程“main”java.lang.NoClassDefFoundError中出现异常:org/apache/xmlbeans/XmlObject 在OrderBook.WriteToExcelSheet.CreateOutPutFile(WriteToExcelSheet.java:20)中 位于OrderBook.MainMethod.main(MainMethod.java:71) 我在网上查找了这个错误的原因,但找不到为什么我会得到它 我已经包括了以下jar文件 poi-
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();
}
}
}
公共类WriteToExcelSheet{
公共静态映射data=newtreemap();
公共静态void CreateOutPutFile(){
XSSFWorkbook工作簿=新XSSFWorkbook();
XSSFSheet sheet=workbook.createSheet(“订单统计数据”);
//需要写入此数据(对象[])
//迭代数据并写入工作表
Setkeyset=data.keyset()
int rownum=0;
for(整数键:键集){
Row-Row=sheet.createRow(rownum++);
Object[]objArr=data.get(key);
int-cellnum=0;
用于(对象对象对象:对象对象对象){
Cell Cell=row.createCell(cellnum++);
if(obj instanceof String)cell.setCellValue((String)obj);
else if(obj instanceof Integer)cell.setCellValue((Integer)obj);
}
}
试一试{
//在文件系统中编写工作簿
System.out.println(“OutPutStats.xlsx写入”);
FileOutputStream out=新的FileOutputStream(新文件(“FileLocation/o.xlxs”));
练习册。写(出);
out.close();
System.out.println(“OutPutStats.xlsx已成功写入磁盘”);
}捕获(例外e){
e、 printStackTrace();
}
}
}
您必须再包含一个jar
xmlbeans-2.3.0.jar
添加这个,然后再试一次
注意:只有.xlsx格式的文件才需要它,而不仅仅是.xls格式的文件。当尝试翻译带有.xlsx后缀的Excel文件时,您需要添加额外的jar,xmlbeansxxx.jar。xxxx是版本,例如
xmlbeans-2.3.0.jar
对于所有您添加的xmlbeans-2.3.0.jar并且它不起作用的内容,您必须在添加jar后使用HSSFWorkbook而不是XSSForkbook。例如
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文件 xmlbeans-2.3.0.jar和dom4j-1.6.1.jar 添加并尝试它将工作
注意:只有.xlsx格式的文件才需要它,而不仅仅是.xlt格式的文件。我遇到了类似的情况,所以我替换了所有外部jar文件(
poi-bin-3.17-20170915
),并确保添加lib和ooxml lib
文件夹中的其他jar
文件
希望这有帮助!!!:) 我当时使用的是talend V7.3.1,我的poi版本为“4.1.0”,包含依赖项列表中的xml bean并没有解决我的问题(即:2.3.0和2.6.0)
在类路径中找不到类时,将引发ClassNotFoundException。 添加以下jar(包含XmlObject接口的定义)将解决此问题
xmlbeans-x.y.z.jar
您可以通过以下链接下载最新的xmlbeans jar文件
如果您正在使用apache poi库,请确保在lib和ooxml lib文件夹中添加JAR。@user2942227您可以从现在开始下载它。它引发了此错误,线程“main”java.lang.NoClassDefFoundError中的异常:org/dom4j/DocumentException原因:java.lang.ClassNotFoundException:org.dom4j.DocumentException,你知道为什么吗?@user2942227 add dom4j-1.6.1.jar,从下载的POI归档文件中查找名为
ooxml lib
的文件夹下载。@asiya你能列出你添加的所有jar吗?它修复了这个错误。现在,它发现它抛出了这个错误,线程“main”java.lang.NoClassDefFoundError:org/dom4j/DocumentException中的异常由:java.lang.ClassNotFoundException:org.dom4j.DocumentException引起,你知道为什么吗?你还需要添加dom4j.jar。因为POI中的一些XML文件使用dom4j来处理XML文件。当您下载POI的src或bin时,应该有一个名为lib的文件夹。所有依赖项库,如xmlBeans和dom4j。7年前,人们接受的答案是添加一个特定的丢失的罐子——在可能有效的情况下添加所有的罐子似乎并没有给问题增加新的思路。请随时用新的见解更新您的答案。@MrR我在使用apache poi库时遇到了同样的问题。我发现我没有添加lib和ooxmllib文件夹中的jar文件。添加所有依赖项jar会有所帮助。虽然正如你所说,我在写这篇文章时应该考虑一下,但它并没有传达正确的信息。谢谢:)。
xmlbeans-x.y.z.jar