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.
- Obtener Directamente
Obtenga "commons-io.jar" del sitio web oficial - http://commons.apache.org/io/
- 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