Foros del Web » Programación para mayores de 30 ;) » Java »

¿que Significa Este Error?

Estas en el tema de ¿que Significa Este Error? en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/01/2006, 17:06
 
Fecha de Ingreso: mayo-2005
Mensajes: 294
Antigüedad: 19 años
Puntos: 0
¿que Significa Este Error?

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";

//Initialize global variables
public void init() throws ServletException {
}

//Process the HTTP Get request
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{
//construimos el objeto que es capaz de parsear la peticion
DiskFileUpload fu = new DiskFileUpload();

//maximo numero de bytes
fu.setSizeMax(1024*512);

//tamaño por encima del cual los ficheros son directamente escritos en disco
fu.setSizeThreshold(4096);

//directorio en el que se escribirán los ficheros con tamaño superior al soportado en memoria
fu.setRepositoryPath("/ji");

//ordenamos procesar los ficheros

List fileItems = fu.parseRequest(req);

if(fileItems==null){
return false;
}
out.print("<br>El número de ficheros subidos es de:"+fileItems.size());

//Iteramos cada fichero

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);

//construimos un objeto file para recuperar el trayecto completo
File fichero= new File(fileName);

//Nos quedamos solo con el nombre y descartamos el path
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;
}

//Clean up resources

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.DefaultFileItemFacto ry.createItem(DefaultFileItemFactory.java:102)
org.apache.commons.fileupload.FileUploadBase.creat eItem(FileUploadBase.java:500)
org.apache.commons.fileupload.FileUploadBase.parse Request(FileUploadBase.java:367)
org.apache.commons.fileupload.FileUploadBase.parse Request(FileUploadBase.java:268)
es.unirioja.dmc.servauto.PruebaFileUpload.procesaF icheros(PruebaFileUpload.java:56)
es.unirioja.dmc.servauto.PruebaFileUpload.doPost(P ruebaFileUpload.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!
  #2 (permalink)  
Antiguo 12/01/2006, 17:20
 
Fecha de Ingreso: junio-2005
Mensajes: 286
Antigüedad: 18 años, 10 meses
Puntos: 2
puede ser porque a la hora de compilar tu IDE ha de tener accesso a la libreria [el JAR] mientras que tu servidor no.

Una de las ventajas del Eclipse es que puedes correr el Tomcat desde el IDE, entonces todas las librerias de tu proyecto son agregadas al servidor Tomcat :) ahorras bastante tiempo.
  #3 (permalink)  
Antiguo 13/01/2006, 05:17
 
Fecha de Ingreso: mayo-2005
Mensajes: 294
Antigüedad: 19 años
Puntos: 0
Ok, lo voy a probar muchas gracias!
  #4 (permalink)  
Antiguo 13/01/2006, 06:25
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
Tras mirar por encima el uso de la api de fileupload http://jakarta.apache.org/commons/fileupload/using.html

He probado este código y sigue dando error :

causa raíz

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

provocado por:
// Parse the request
List /* FileItem */ items = upload.parseRequest(req);

¿¿?? Nadie sabe como arreglar este "tropiezo" ???

Seguimos en las mismas ...

Código:
import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.*;
import org.apache.commons.fileupload.servlet.*;

import java.util.*;

.......................................

 public boolean procesaFicheros(HttpServletRequest req, PrintWriter out ) {
       
        
        try {
        // Check that we have a file upload request
        boolean isMultipart = FileUpload.isMultipartContent(req);
        // Create a factory for disk-based file items
        FileItemFactory factory = new DiskFileItemFactory();

        // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(factory);

        // Parse the request
        List /* FileItem */ items = upload.parseRequest(req);
        
             if(items == null)
            {
                depura("La lista es nula");
                return false;
            }

            out.print("<br>El número de ficheros subidos es: " +  items.size());
        // Iteramos por cada fichero
	    Iterator i = items.iterator();
            FileItem actual = null;
            depura("estamos en la iteración");

            while (i.hasNext())
            {
                actual = (FileItem)i.next();
                String fileName = actual.getName();
                out.println("<br>Nos han subido el fichero" + fileName);

                // construimos un objeto file para recuperar el trayecto completo
                File fichero = new File(fileName);
                depura("El nombre del fichero es " + fichero.getName());

                // nos quedamos solo con el nombre y descartamos el path
                fichero = new  File("c:\\ficherossubidos\\" + fichero.getName());

                // escribimos el fichero colgando del nuevo path
                actual.write(fichero);
            }
        }
        catch (
            Exception e){depura("Error de Aplicación " + e.getMessage());
            return false;
        }

        return true;
    }

Última edición por dogduck; 13/01/2006 a las 06:33
  #5 (permalink)  
Antiguo 13/01/2006, 06:41
 
Fecha de Ingreso: junio-2005
Mensajes: 286
Antigüedad: 18 años, 10 meses
Puntos: 2
el problema es obviamente que el compilador (o servidor) no encuentra la clase en el JAR, o no encuentra el JAR. Para resolverlo tendras que agregar el JAR al classpath de tu servidor o compilador.
  #6 (permalink)  
Antiguo 13/01/2006, 06:49
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
El compilador no es , ya que el servlet compila sin problemas . Es cuando se le llama desde el formulario para efectuar un upload , que lanza la excepción

Y efectivamente el paquete

org.apache.commons.io.output.DeferredFileOutputStr eam ¿no existe ?

Pero si la buscas en la API , si que existe :

http://jakarta.apache.org/commons/io...putStream.html

¿ Alguien tiene una pista ?
  #7 (permalink)  
Antiguo 13/01/2006, 06:57
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
¡¡¡ Solucionado !!! Hace falta bajarse la libreria commons IO

http://jakarta.apache.org/site/downl...commons-io.cgi



Gracias Willie , está claro que a veces el arbol no deja ver el bosque ...


-----
http://club.idecnet.com/~ccastano/femepa/130106.htm
-----

Última edición por dogduck; 13/01/2006 a las 07:30
  #8 (permalink)  
Antiguo 13/01/2006, 06:59
 
Fecha de Ingreso: junio-2005
Mensajes: 286
Antigüedad: 18 años, 10 meses
Puntos: 2
el Jar esta en el folder WEB-INF/lib en la aplicacion web?
  #9 (permalink)  
Antiguo 13/01/2006, 07:10
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
El jar que se llama commons-io-1.1.jar me lo bajé y tras integrarlo como libreria en el proyecto de NetBeans .

Efectivamente , lo pone en WEB-INF/lib
  #10 (permalink)  
Antiguo 13/01/2006, 11:09
 
Fecha de Ingreso: mayo-2005
Mensajes: 294
Antigüedad: 19 años
Puntos: 0
Muchiiiiiiiiisimas Gracias

oye muchas pero qeu muchas gracias. Esta misma noche en cuanto saque diz minutitos lo voy a probar y ya os comento que tal me ha ido, pero muchas gracias de verdad!
  #11 (permalink)  
Antiguo 13/01/2006, 16:21
 
Fecha de Ingreso: mayo-2005
Mensajes: 294
Antigüedad: 19 años
Puntos: 0
Oye Lo He Probado Y Perfecto.
Muchas Gracias, Me Habeis Sacado De Un Apuro
  #12 (permalink)  
Antiguo 13/01/2006, 19:07
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Perdona el off-topic pero tengo una curiosidad. ¿El escribir la primera letra de todas las palabras con mayúsculas lo haces "a mano" o te lo hace un programa?

Por que esforzarse tanto para poner todas esas mayusculas siendo totalmente incorrecto y lioso para el que lo lee... me sorprende.

Es sólo curiosidad por si tiene algún motivo concreto, no es mi intención ofender.
  #13 (permalink)  
Antiguo 15/01/2006, 11:09
 
Fecha de Ingreso: mayo-2005
Mensajes: 294
Antigüedad: 19 años
Puntos: 0
Hola la verdad es que no entiendo por que en ese mensaje me ha salido así. Si te fijas en los demas post que he puesto no me pasa eso, sinceramente no me habia dado ni cuenta pero desde luego que yo a mano no lo he hecho y no entiendo porque me lo ha hecho el ordenador ya que es la primera vez(siendo yo consciente) que me pasa.
Un saludo!
  #14 (permalink)  
Antiguo 15/01/2006, 15:46
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Hehehe, ok. Por eso lo decía, ya que es extraño hacer todo ese trabajo extra... No se, lo he visto en otros mensajes, que creo que no eran tuyos, asi que a lo mejor es un fallo del foro... pero es tan aleatorio... que raro.
En fin, misterios.
  #15 (permalink)  
Antiguo 19/04/2006, 20:34
 
Fecha de Ingreso: abril-2006
Mensajes: 36
Antigüedad: 18 años
Puntos: 0
Eres Un Maestro,...... Gracias... Era Justo Lo Qeu Buscaba
  #16 (permalink)  
Antiguo 26/04/2006, 17:05
 
Fecha de Ingreso: abril-2006
Mensajes: 1
Antigüedad: 18 años
Puntos: 0
Hola, muchas gracias Dogduck por tu solución, yo tenía el mismo problema y hasta que no he leído tu post no lo he podido solucionar en parte.

Ahora el problema que tengo (con el mismo ejemplo que ha puesto Charcaharas al principio), es que no me sale el archivo que he subido al servidor, tengo:
fu.setRepositoryPath("/tmp"). Me sale el mensaje de que se ha subido al servidor mi archivo pero en el directorio "tmp" no aparece.

¿¿Alguien sabe que puede ser??
Muchas gracias de antemano a todos por vuestro tiempo.
  #17 (permalink)  
Antiguo 18/09/2006, 14:48
Avatar de edwinandlozano  
Fecha de Ingreso: octubre-2003
Mensajes: 272
Antigüedad: 20 años, 6 meses
Puntos: 0
De acuerdo

Cita:
Iniciado por dogduck Ver Mensaje
¡¡¡ Solucionado !!! Hace falta bajarse la libreria commons IO

http://jakarta.apache.org/site/downl...commons-io.cgi



Gracias Willie , está claro que a veces el arbol no deja ver el bosque ...


-----
http://club.idecnet.com/~ccastano/femepa/130106.htm
-----
Gracias por tu apunte .. era lo que me faltaba para que funcionara el ejemplo...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:33.