8

I'm using apache FileUpload to handle a.. file upload. I'm using it with jetty. The servlet sees the multipart request, but throws a NoClassDefFoundError exception upon execution:

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
  throws ServletException, IOException 
{
  boolean isMultipart = ServletFileUpload.isMultipartContent(req);
  if (isMultipart) {
    try {
      FileItemFactory factory = new DiskFileItemFactory();

      ServletFileUpload upload = new ServletFileUpload(factory);

      List items = upload.parseRequest(req); //  exception
      ...

throws:

java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
   at org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:199)

caused by:

java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream

Is there an additional jar we need to include besides commons-fileupload-1.2.2.jar?

My goal is to just upload a single file and write it to disk.

Thanks

skaffman
  • 381,978
  • 94
  • 789
  • 754
user291701
  • 34,331
  • 68
  • 176
  • 277

2 Answers2

14

You need to add CommonsIO to the classpath. Commons File Upload is dependent on it.

Piyush Mattoo
  • 14,524
  • 6
  • 49
  • 58
4

Add the below dependency

    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>
Alex Shesterov
  • 21,630
  • 10
  • 65
  • 88
Shravan Ramamurthy
  • 3,044
  • 2
  • 21
  • 38