Servlet File Upload funktioniert nur lokal auf Entwicklungsrechner, nicht in Tomcat

andyx1975

Aktives Mitglied
Hallo,

ich habe ein Upload Servlet geschrieben. Das funktioniert bei mir local in der Entwicklungsumgebung auch hervoragend. Die Datei wird im entsprechenden Uploadverzeichnis abgelegt. Wenn ich die Application jedoch auf einem Server ausführe, bekomme ich die folgende Fehlermeldung:

Java:
HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet execution threw an exception

root cause

java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
	org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:199)
	org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:361)
	org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
	com.uds.webadmin.server.CServletFile.doPost(CServletFile.java:85)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1360)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1206)
	org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:199)
	org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:361)
	org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
	com.uds.webadmin.server.CServletFile.doPost(CServletFile.java:85)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.16 logs.
Apache Tomcat/6.0.16

Der Fehler tritt in der folgenden Zeile auf:
Java:
List<FileItem> items = upload.parseRequest( req );

Java:
package com.uds.webadmin.server;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;


public class CServletFile
    extends HttpServlet
{

    private static final long serialVersionUID = 1L;


    @Override
    protected void doPost( HttpServletRequest req, HttpServletResponse resp )
        throws ServletException, IOException
    {

        String UPLOAD_DIRECTORY = getServletContext().getRealPath( "/" ) + "uploads";


        if ( ServletFileUpload.isMultipartContent( req ) )
        {
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload( factory );

            try
            {
                List<FileItem> items = upload.parseRequest( req );
                for ( FileItem item : items )
                {
                    if ( item.isFormField() )
                        continue;

                    String fileName = req.getParameter( "file" );

                    File uploadedFile = new File( UPLOAD_DIRECTORY, fileName );
                    if ( uploadedFile.createNewFile() )
                    {
                        item.write( uploadedFile );
                        resp.setStatus( HttpServletResponse.SC_CREATED );
                        resp.getWriter().print( "The file was created successfully." );
                        resp.flushBuffer();
                    }
                    else
                        throw new IOException( "The file already exists in repository." );
                }
            }
            catch ( Exception e )
            {
                resp.sendError( HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                                "An error occurred while creating the file : " + e.getMessage() );
            }

        }
        else
        {
            resp.sendError( HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE,
                            "Request contents type is not supported by the servlet." );
        }
    }

}
 
Zuletzt bearbeitet:

andyx1975

Aktives Mitglied
ok super... ich habe die commons-io-2.1 runtergeladen und im Verzeichnis "Tomcat\common\lib" abgelegt. Tomcat neu gestartet und schon funktionierte es :) Danke!!!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L File Upload - Dateiformat einschränken Web Tier 4
S Servlet File Upload (API oder JSPSmart download) Web Tier 4
hdi File Upload erst nach Prüfung Web Tier 4
E Jsp file upload Web Tier 3
E File upload mit jsp (frage zum speicherort) Web Tier 12
H File Output Servlet Web Tier 6
H Applet wirft AccessControlException bei File von Servlet Web Tier 3
M JSP File Browser Web Tier 9
N File empfangen Web Tier 3
M File aus Projektverzeichnis laden Web Tier 16
R Download JSP-File/Script Web Tier 3
N is out of sync with file system Web Tier 2
reibi Konfiguration ausserhalb vom WAR-File Web Tier 7
W Java code aus JSP-File durch JSTL code ersetzen Web Tier 8
R File Einlesen mit jsp/servlets Web Tier 11
D welcome-file in web.xml Web Tier 3
O eine .do-File als welcome-file im web.xml Web Tier 4
X Properties-File und relative Pfadangaben Web Tier 5
S JSP File Download (SVNKit) Web Tier 11
P jax-rs detect aborting upload Web Tier 2
Y JSF Pdf Upload Web Tier 2
S Picture Upload Web Tier 3
K Bilder nach dem Upload nutzen Web Tier 10
E Ftp-Upload von Images Web Tier 2
E Upload per Drag and Drop im IE Web Tier 7
D Codierung im Frontend funktioniert nicht richtig Web Tier 2
krgewb Base64 funktioniert nicht, aber btoa funktioniert Web Tier 10
S Websocket.jar funktioniert nur teilweise Web Tier 14
M webapp controller funktioniert nicht Web Tier 3
J Https Verknüpfung funktioniert nicht Web Tier 0
W JSF DataTable - Filter Funktion funktioniert nicht Web Tier 3
F JSF Bean funktioniert nicht immer.. Web Tier 3
L error-page mit ui:composite funktioniert nicht Web Tier 0
L JSF Composit Component mit ajax funktioniert nicht. Web Tier 4
M <p:accordionPanel <ui:repeat <p:commandButton Action funktioniert teilweise Web Tier 3
A Aufruf eines Servlets auf einer JSP Seite funktioniert nicht Web Tier 10
D JSF cellpadding oder cellspacing funktioniert nicht Web Tier 4
W JSF Login funktioniert nicht Web Tier 12
F PrimeFaces p:selectOneMenu funktioniert nicht Web Tier 12
J @Named Notation funktioniert nicht Web Tier 3
D richTable sort funktioniert nicht Web Tier 2
J JSF Richfaces Tabs, dynamisches include funktioniert nicht Web Tier 4
D Fileupload in GWT funktioniert nicht Web Tier 10
A JSF Weiterleitung funktioniert einfach nicht Web Tier 2
T Funktioniert das Zusammenspiel folgender Komponenten? Web Tier 2
D [GWT] Celltable SimplePager funktioniert in 2.2 nicht Web Tier 1
T JSF Dependency-Injection funktioniert offenbar nicht - warum? Web Tier 4
S Bean Validation (JSF 2.0) funktioniert nicht. Web Tier 4
D JSF 2.0 Navigationsregel funktioniert nicht Web Tier 2
F JApplet in Tomcat-Umgebung funktioniert mal wieder nicht ... Web Tier 8
P Richfaces/Seam: RichShuttleListe funktioniert nicht Web Tier 8
P Tomcat funktioniert nicht so wie er sollte Web Tier 11
megachucky JSF - NavigationRule funktioniert nicht Web Tier 9
C RichFaces Ajax ReRender funktioniert nicht. Web Tier 2
L BMI-Messer funktioniert nicht Web Tier 18
G Session.invalide() funktioniert nicht richtig Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben