¿QUE SIGNIFICA ESTE ERROR?
Publicado por CARCAHARAS (58 intervenciones) el 12/01/2006 23:47:40
Hola buenas!
Vereis tengo este codigo(no es necesario que lo leais entero!):
package es.unirioja.dmc.servauto;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.*;
import java.util.*;
public class PruebaFileUpload extends HttpServlet {
private static final String CONTENT_TYPE = "text/html";
[COLOR="SeaGreen"]//Initialize global variables[/COLOR]
public void init() throws ServletException {
}
[COLOR="seagreen"]//Process the HTTP Get request[/COLOR]
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>PruebaFileUpload</title></head>");
out.println("<body bgcolor=\"#ffffff\">");
System.out.println("Comenzamos procesamiento de ficheros");
procesaFicheros(request,out);
out.println("</body></html>");
out.close();
}
public boolean procesaFicheros(HttpServletRequest req, PrintWriter out){
try{
[COLOR="seagreen"] //construimos el objeto que es capaz de parsear la peticion[/COLOR]
DiskFileUpload fu = new DiskFileUpload();
[COLOR="seagreen"] //maximo numero de bytes[/COLOR]
fu.setSizeMax(1024*512);
[COLOR="seagreen"] //tamaño por encima del cual los ficheros son directamente escritos en disco[/COLOR]
fu.setSizeThreshold(4096);
[COLOR="seagreen"] //directorio en el que se escribirán los ficheros con tamaño superior al soportado en memoria[/COLOR]
fu.setRepositoryPath("/ji");
[COLOR="seagreen"]
//ordenamos procesar los ficheros[/COLOR]
[COLOR="Red"] List fileItems = fu.parseRequest(req);[/COLOR]
if(fileItems==null){
return false;
}
out.print("<br>El número de ficheros subidos es de:"+fileItems.size());
[COLOR="seagreen"] //Iteramos cada fichero[/COLOR]
Iterator i=fileItems.iterator();
FileItem actual=null;
while(i.hasNext()){
actual=(FileItem)i.next();
String fileName = actual.getName();
out.print("<br>Nos has subido el fichero" + fileName);
[COLOR="seagreen"] //construimos un objeto file para recuperar el trayecto completo[/COLOR]
File fichero= new File(fileName);
[COLOR="seagreen"] //Nos quedamos solo con el nombre y descartamos el path[/COLOR]
fichero= new File("c:\\DIRECTORIO\\"+fichero.getName());
//escribimos el fichero colgando del nuevo path
actual.write(fichero);
}
}catch(Exception e){
System.out.println("error de aplicacion "+e.getMessage());
}
return true;
}
[COLOR="seagreen"]
//Clean up resources[/COLOR]
public void destroy() {
}
}
En este codigo en la linea que os he marcado en rojo me da este error:
mensaje
descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.
excepción
javax.servlet.ServletException: La ejecución del Servlet lanzó una excepción
causa raíz
java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
org.apache.commons.fileupload.DefaultFileItemFactory.createItem(DefaultFileItemFactory.java:102)
org.apache.commons.fileupload.FileUploadBase.createItem(FileUploadBase.java:500)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:367)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:268)
es.unirioja.dmc.servauto.PruebaFileUpload.procesaFicheros(PruebaFileUpload.java:56)
es.unirioja.dmc.servauto.PruebaFileUpload.doPost(PruebaFileUpload.java:36)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
El caso es que al compilar el codigo no me da ningun error y no se en donde más me puede faltar una clase o lo que sea que significa ese error.
Aver si me podeis ayudar ok?Muchas gracias!
Vereis tengo este codigo(no es necesario que lo leais entero!):
package es.unirioja.dmc.servauto;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.*;
import java.util.*;
public class PruebaFileUpload extends HttpServlet {
private static final String CONTENT_TYPE = "text/html";
[COLOR="SeaGreen"]//Initialize global variables[/COLOR]
public void init() throws ServletException {
}
[COLOR="seagreen"]//Process the HTTP Get request[/COLOR]
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>PruebaFileUpload</title></head>");
out.println("<body bgcolor=\"#ffffff\">");
System.out.println("Comenzamos procesamiento de ficheros");
procesaFicheros(request,out);
out.println("</body></html>");
out.close();
}
public boolean procesaFicheros(HttpServletRequest req, PrintWriter out){
try{
[COLOR="seagreen"] //construimos el objeto que es capaz de parsear la peticion[/COLOR]
DiskFileUpload fu = new DiskFileUpload();
[COLOR="seagreen"] //maximo numero de bytes[/COLOR]
fu.setSizeMax(1024*512);
[COLOR="seagreen"] //tamaño por encima del cual los ficheros son directamente escritos en disco[/COLOR]
fu.setSizeThreshold(4096);
[COLOR="seagreen"] //directorio en el que se escribirán los ficheros con tamaño superior al soportado en memoria[/COLOR]
fu.setRepositoryPath("/ji");
[COLOR="seagreen"]
//ordenamos procesar los ficheros[/COLOR]
[COLOR="Red"] List fileItems = fu.parseRequest(req);[/COLOR]
if(fileItems==null){
return false;
}
out.print("<br>El número de ficheros subidos es de:"+fileItems.size());
[COLOR="seagreen"] //Iteramos cada fichero[/COLOR]
Iterator i=fileItems.iterator();
FileItem actual=null;
while(i.hasNext()){
actual=(FileItem)i.next();
String fileName = actual.getName();
out.print("<br>Nos has subido el fichero" + fileName);
[COLOR="seagreen"] //construimos un objeto file para recuperar el trayecto completo[/COLOR]
File fichero= new File(fileName);
[COLOR="seagreen"] //Nos quedamos solo con el nombre y descartamos el path[/COLOR]
fichero= new File("c:\\DIRECTORIO\\"+fichero.getName());
//escribimos el fichero colgando del nuevo path
actual.write(fichero);
}
}catch(Exception e){
System.out.println("error de aplicacion "+e.getMessage());
}
return true;
}
[COLOR="seagreen"]
//Clean up resources[/COLOR]
public void destroy() {
}
}
En este codigo en la linea que os he marcado en rojo me da este error:
mensaje
descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.
excepción
javax.servlet.ServletException: La ejecución del Servlet lanzó una excepción
causa raíz
java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
org.apache.commons.fileupload.DefaultFileItemFactory.createItem(DefaultFileItemFactory.java:102)
org.apache.commons.fileupload.FileUploadBase.createItem(FileUploadBase.java:500)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:367)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:268)
es.unirioja.dmc.servauto.PruebaFileUpload.procesaFicheros(PruebaFileUpload.java:56)
es.unirioja.dmc.servauto.PruebaFileUpload.doPost(PruebaFileUpload.java:36)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
El caso es que al compilar el codigo no me da ningun error y no se en donde más me puede faltar una clase o lo que sea que significa ese error.
Aver si me podeis ayudar ok?Muchas gracias!
Valora esta pregunta


0