java.lang.ClassNotFoundException: org.apache.poi.xssf.usermodel.XSSFWorkbook
44,137
Solution 1
Download poi-ooxml.jar
and add it to your classspath.
Solution 2
You need the file poi-ooxml.jar
in your classpath as @Jens said.
You are using the correct import
statement but it seems that you don't have the file poi-ooxml.jar
in the class path of your web container.
If you are using maven, you should put this dependency in your pom.xml
inside the <dependencies>
tag:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
Author by
Rajasekhar
Updated on July 09, 2022Comments
-
Rajasekhar almost 2 years
when i tried to create a workbook in normal java class it is creating but when i tried to run the same on servlet it is throwing exceptions
Normal java class
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class Sampleclass { public static void main(String[] args) { FileInputStream file; try { file = new FileInputStream(new File("C:\\Users\\Rajasekhar\\Desktop\\EmployeeDetails.xlsx")); Workbook book=new XSSFWorkbook(file); System.out.println(book); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Servlet
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @SuppressWarnings("serial") public class sampleServlet extends HttpServlet { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) { FileInputStream file; try { file = new FileInputStream(new File("C:\\Users\\Rajasekhar\\Desktop\\EmployeeDetails.xlsx")); Workbook book=new XSSFWorkbook(file); } catch (FileNotFoundException e) { System.out.println("exception occured is "+e); e.printStackTrace(); } catch (IOException e) { System.out.println("exception occured is "+e); e.printStackTrace(); } } }
the exception occured was
SEVERE: Servlet.service() for servlet [upload] in context with path [/Temp2] threw exception [Servlet execution threw an exception] with root cause java.lang.ClassNotFoundException: org.apache.poi.xssf.usermodel.XSSFWorkbook at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569) at sampleServlet.doGet(sampleServlet.java:23) at javax.servlet.http.HttpServlet.service(HttpServlet.java:620) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)
I have added all required apache poi jars.
-
Jens over 9 yearsis it in your tomcat classpath? in WEB-INF/lib of your application or in the lib folder of your tomcat?
-
Rajasekhar over 9 yearsi have added in application (build path config _ add external jars)
-
Sunil almost 8 yearsHow you resolved the issue, I am struggling with the same problem.
-
A.W. almost 7 yearsI'm using Grails 3 and adding this dependency solves this for me.
-
Pedro Sequeira over 6 yearsthe issue is different. as you can see he have the correct imports: import org.apache.poi.xssf.usermodel.XSSFWorkbook; you should stop answering only to get points. -1
-
Edgard Leal over 6 yearsThank you for your feed back @PedroSequeira, I will try improve my answer.