NoClassDefFoundError org/apache/poi/ss/usermodel/Workbook

50,942

Solution 1

As per this Apache POI FAQ entry, mixing POI jars between different versions is not supported and will break in all sorts of ways, such as the one you've found. Don't do it!

You need to be using your POI jars all from the same release. I'd suggest the latest version, available here (currently 3.15)

You should probably also review the components and their dependencies page, to ensure you've got all the required jars for your use of Apache POI. Well, or use a dependency management tool like Maven or Gradle to handle that for you!

Solution 2

I have downloaded the latest Apache POI binaries v3.17 here and it has all the required jars to create xlsx file and open with out any fuss.

Required jars are shown in below screenshots (refer to selected jars) FYR.

Main Jars

Supported Jars

Supported Jars

Solution 3

For apache poi to work, you need compatible jars. I used these jars

      <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi</artifactId>
             <version>3.9</version>
      </dependency>
      <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-ooxml</artifactId>
             <version>3.9</version>
      </dependency>
      <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-ooxml-schemas</artifactId>
             <version>3.9</version>
      </dependency>
      <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-scratchpad</artifactId>
             <version>3.9</version>
      </dependency>
      <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>ooxml-schemas</artifactId>
             <version>1.1</version>
      </dependency>
      <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>openxml4j</artifactId>
             <version>1.0-beta</version>
      </dependency>

Solution 4

Delete the poi jar from your maven repository and download or build the project again.

Share:
50,942
user1318369
Author by

user1318369

Updated on December 24, 2021

Comments

  • user1318369
    user1318369 over 2 years

    I am running a shell script which calls a java class to get some data from database and create an excel report with that data. I get the error Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Workbook when the code hits the below line in my java class:

    XSSFWorkbook  workbook = new XSSFWorkbook ();
    

    This is how I have defined the classpath:

    CLASSPATH=${CLASSPATH}:<path-to-jars>/poi-2.5.1-final-20040804.jar
    CLASSPATH=${CLASSPATH}:<path-to-jars>/poi-ooxml-3.11.jar
    

    I verified that the jars have been downloaded(via gradle), so trying to understand what am I missing here. Can someone please help me with this?

    Stacktrace:

        Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Workbook
            at java.lang.ClassLoader.defineClass1(Native Method)
            at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
            at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
            at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
            at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
            at com.test.ExcelReportGenerator.writeExcel(ExcelReportGenerator.java:26)
            at com.test.ReportRunner.createReport(ReportRunner.java:109)
            at com.test.ReportRunner.main(ReportRunner.java:93)
    Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.Workbook
            at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
            ... 15 more