QUE SIGNIFICA ESTE ERROR?

carcaharas
10 de Noviembre del 2009
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!

jaquiso
10 de Noviembre del 2009
Apreciado carcaharas, ya que has tenido el tiempo de escribir esta nueva pregunta quiza tambien puedas sacar el tiempo para agradecer la ayuda que se te ha prestado en anteriores consultas y de paso comentar si las soluciones te han servido de algo.
Cuando no haces esto tan solo consigues que no se te ayude la siguiente vez, lease esta vez.

carcaharas
10 de Noviembre del 2009
Hola! bueno la verdad es que tienes razón. Escribo en varios foros y de verdad que muchas veces escribo a ver si la ayuda me ha ido bien o no, o si he buscado otra manera la pongo en común. Un saludo

jaquiso
10 de Noviembre del 2009
No pasa nada, es que me pone negro que despues de tomarme un tiempo tratando de ayudar a alguien este no se digne a dar las gracias.

Un saludo

jaquiso
10 de Noviembre del 2009
Tiene pinta de que el editor que usas para compilar sí tiene en el classpath la librería necesaria pero el servidor web no la tiene.
La librería parece ser la commons-io-[version_lib].jar. Buscala y ponla en la carpeta WEB-INF/lib del proyecto, ahi debería encontrarla el servidor web.
Lo de [version_lib] no esta en el nombre del jar evidentemente, te lo he puesto porque no se que version tendras, un ejemplo de nombre correcto es commons-io-1.0.jar

sara
10 de Noviembre del 2009
Si jaquiso, si tienes toda la razón que mínimo que gracias por la ayuda y luego decir si te ha servido o no, tienes toda la razón!
Pues lo que me comentas voy a probarlo a ver y por supuesto os comentare que tal me ha ido la solucion.

Un saludo y cuidadín con el alcohol el finde!