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:
Der Fehler tritt in der folgenden Zeile auf:
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: