47

I am getting following error

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlObject at OrderBook.WriteToExcelSheet.CreateOutPutFile(WriteToExcelSheet.java:20) at OrderBook.MainMethod.main(MainMethod.java:71)

I looked for the reasons for this error online but couldn't find why I am getting it.

I have included the following jar files

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

Code:

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();
        }
    }
}    

9 Answers 9

99

You have to include one more jar.

xmlbeans-2.3.0.jar

Add this and try.

Note: It is required for the files with .xlsx formats only, not for just .xls formats.

Sign up to request clarification or add additional context in comments.

9 Comments

@user2942227 you can download it from here
Now it threw this error,Exception in thread "main" java.lang.NoClassDefFoundError: org/dom4j/DocumentExceptionCaused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException, Do you know why?
@user2942227 add dom4j-1.6.1.jar , download it from here
Look for an folder named ooxml-lib in the POI archive that you downloaded.
@asiya can you list all the jars that you added??
|
4

you have to include two more jar files.

xmlbeans-2.3.0.jar and dom4j-1.6.1.jar Add try it will work.

Note: It is required for the files with .xlsx formats only, not for just .xlt formats.

Comments

3

When trying to translate Excel file with .xlsx suffix, you need to add additional jar, xmlbeansxxx.jar. xxxx is version, such as xmlbeans-2.3.0.jar

3 Comments

It fixed that error. Now, it threwNow it threw this error,Exception in thread "main" java.lang.NoClassDefFoundError: org/dom4j/DocumentExceptionCaused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException, Do you know why?
You need to add dom4j.jar as well. Since some XML file in POI uses dom4j to handle XML file.
When you downloads src or bin for POI, there should be a folder named lib. all of the dependency libs, such as xmlBeans and dom4j. jar are thers.
1

For all that you add xmlbeans-2.3.0.jar and it is not working,you must use HSSFWorkbook instead of XSSFWorkbook after add jar.For instance;

    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();
    }

Comments

1

You need to include xmlbeans-xxx.jar and if you have downloaded the POI binary zip, you will get the xmlbeans-xxx.jar in ooxml-lib folder (eg: \poi-3.11\ooxml-lib)

This jar is used for XML binding which is applicable for .xlsx files.

Comments

1

I faced a similar situation, so i replaced all the external jar files(poi-bin-3.17-20170915) and make sure you add other jar files present in lib and ooxml-lib folders.

Hope this helps!!!:)

Comments

0

I was working with talend V7.3.1 and I had poi version "4.1.0" and including xml-beans from the list of dependencies didnt fix my problem (i.e: 2.3.0 and 2.6.0).

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

enter image description here

Comments

0

If to do this right way, you need to create a maven project and put all depenencies into pom.xml file, dependencies for maven you can google, for example: https://mvnrepository.com/artifact/org.apache.poi/poi/5.0.0?

If to do this hardcore way, download POI library binary files and add all the .jar files from all of the folders (for POI 5.0.0) this is (auxiliary, ooxml-lib, lib) folders and root catalog. In my case it works, if you don't want to figure out what library relate for what.

Something like that:

enter image description here

Comments

-1

ClassNotFoundException is thrown when the class is not found in the classpath. Adding the following jar(contains the definition of the XmlObject interface) will solve the problem

xmlbeans-x.y.z.jar

You can download the latest xmlbeans jar file at the following link https://xmlbeans.apache.org/download/index.html

If you are working with the apache poi library make sure you add jars in the lib and ooxml-lib folders.

2 Comments

@TammaliDeppak the accepted answers 7 years ago was to add a single specific missing JAR - adding all the JARs while it might work doesn't seem to add new thought to the problem. Please feel free to update your answer with a new insight.
@MrR I had the same problem while I was working with the apache poi library. I found that that I did not add the jar files that are present in the lib and ooxml-lib folders. Adding all dependency jars helped. Though as you said I should have given a thought while writing the post, It didn't convey the right information. Thanks :).

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.