Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    java.lang.NoSuchMethodError

    Ciao Ragazzi,

    ho questo problema:

    Ho creato una servlet che deve prendere un file da input e fare l'upload in una cartella.

    Questa è la jsp...

    <html>
    <head> </head>
    <body>
    <form method="post" action="Upload.do" enctype="multipart/form-data">
    <input type="file" name="csvFile"/>
    <input type="submit" value="Upload"/>
    </form>
    </body>
    </html>

    e questo il metodo

    protected void doPost(HttpServletRequest req, HttpServletResponse resp){
    ServletContext context = getServletContext();
    String path = getServletContext().getRealPath("/etc/file");
    File dest = new File(path);
    if(!dest.exists()){
    dest.mkdirs();
    }

    DiskFileItemFactory fileItemFactory = new DiskFileItemFactory ();
    /*
    *Set the size threshold, above which content will be stored on disk.
    */
    fileItemFactory.setSizeThreshold(1024*1024); //1 MB
    /*
    * Set the temporary directory to store the uploaded files of size above threshold.
    */

    ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory);
    try {
    /*
    * Parse the request
    */
    List lista = uploadHandler.parseRequest(req);
    for(int i=0; i<lista.size(); i++){
    FileItem item = (FileItem)lista.get(i);
    System.out.println(item.getName());
    System.out.println(item.getString());
    File file = new File(path,item.getName());
    try {
    item.write(file);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }catch(FileUploadException ex) {
    System.out.println(ex.getMessage());
    }
    }

    Il problema è questo: se lancio questa applicazione sotto Apache funziona.
    Se lancio questa applicazione sotto jetty (mi serve per lavoro) mi restituisce

    java.lang.NoSuchMethodError

    quando va a fare List lista = uploadHandler.parseRequest(req);

    Motivo?

    Grazie a tutti...
    Daniele.

  2. #2
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    ServletFileUpload non è una classe standard definita da Java EE ma appartiene alla Apache commons, giusto? E' possibile che i due servlet container che utilizzi impieghino versioni diverse di questa libreria

  3. #3
    Grazie,
    quindi il primo, essendo Tomcat, risolveva il metodo, mentre questo (Jetty) no?

  4. #4
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Se Jetty non trovasse la libreria "commons" ti segnalerebbe un ClassNotFoundException su ServletFileUpload, cosa che non fa.
    No, ti conviene verificare che versione della commons utilizza e poi controllare sulla documentazione associata

  5. #5
    La versione, o meglio, il jar ce l'ho messo io...

  6. #6
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    L'hai messo nella lib sotto WEB-INF, giusto? E così dovrebbe essere corretto: il caricamento è gestito automaticamente dal servlet container.
    Non è che c'è qualche conflitto con un .jar di libreria contenente la stessa classe, ma di una versione diversa?

  7. #7
    C'è sia il commons-fileupload-1.0.jar
    che quello ke ho inserito io commons-fileupload-1.2.1-jar
    Provo a toglierlo e a ricompilare e a rieseguire il tutto...

    Daniele.

  8. #8
    Risolto...
    c'era la versione vecchia che dava problemi...
    Grazie...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.