org descargar commons servlets upload tomcat5.5

servlets - descargar - java org apache commons io



¿Cómo resolver esto java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream? (6)

Estoy usando el siguiente código para subir un archivo a tomcat5.5 y me da la siguiente excepción

java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream

¿Podrías por favor ayudarme a descubrirlo?

import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; 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.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** * Servlet implementation class FileUploadServlet */ public class FileUploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public FileUploadServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ @SuppressWarnings("rawtypes") protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub boolean isMultipart = ServletFileUpload.isMultipartContent(request); System.out.println("Status : "+isMultipart); if (isMultipart) { FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); try { List items = upload.parseRequest(request); Iterator iterator = items.iterator(); while (iterator.hasNext()) { FileItem item = (FileItem) iterator.next(); if (!item.isFormField()) { String fileName = item.getName(); String root = getServletContext().getRealPath("/"); File path = new File(root + "/uploads"); if (!path.exists()) { boolean status = path.mkdirs(); } File uploadedFile = new File(path + "/" + fileName); System.out.println(uploadedFile.getAbsolutePath()); item.write(uploadedFile); } } } catch (FileUploadException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } response.sendRedirect("upload.jsp"); } }

este es el jar que uso commons-fileupload-1.2.2.jar


Descargar PrimeFaces 4.0 . Solucionó mi problema de inmediato. Estoy usando Glassfish 4.0


El mensaje de excepción particular le dice que la clase mencionada falta en el classpath. Como indica el nombre del paquete org.apache.commons.io , la clase mencionada es parte del proyecto http://commons.apache.org/io .

Y, de hecho, Commons FileUpload tiene Commons IO como una dependency . Necesita download y soltar commons-io.jar en /WEB-INF/lib también.

Ver también:


Si recibe este error en un contenedor de WebSphere, asegúrese de configurar correctamente la política de carga de la clase de aplicaciones. Tuve que cambiar el mío del predeterminado a ''parent last'' y también ''Single class loader for application'' para la política de WAR. Esto es porque en mi caso el commons-io * .jar estaba empaquetado en la aplicación, por lo que tuvo que cargarse primero.


Solución

De forma predeterminada, Struts está utilizando Apache "commons-io.jar" para su proceso de carga de archivos. Para solucionarlo, debe incluir esta biblioteca en la carpeta de la biblioteca de dependencias del proyecto.

  1. Obtener Directamente

Obtenga "commons-io.jar" del sitio web oficial - http://commons.apache.org/io/

  1. Obtener de Maven

La forma preferida es obtener el "commons-io.jar" del repositorio Maven

Archivo: pom.xml

<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>1.4</version> </dependency>


simplemente ponga todo el jar de apache comons y el archivo jar de carga en la carpeta lib de tomcat


usar la dependencia maven

<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency>

o descargue commons-io.1.3.2.jar a su carpeta lib