Amigons,
Tô usando um código pronto da revista Java Magazine que faz o upload de arquivo, já criei a página que solicitará o servlet com o campo file “tudo direitinho” e na chamada deste ocorre o seguinte erro:
Erro gerado pelo servlet uploadArquivoServlet
[code]javax.servlet.ServletException: Error instantiating servlet class net.itambe.uploadArquivoServlet
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
java.lang.Thread.run(Thread.java:534)
java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Class.java:1618)
java.lang.Class.getConstructor0(Class.java:1930)
java.lang.Class.newInstance0(Class.java:278)
java.lang.Class.newInstance(Class.java:261)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
java.lang.Thread.run(Thread.java:534)
[/code]
Página que chama o servlet
[code]
Upload de ArquivoUpload de Arquivo
Seu nome:Localização do Arquivo:
[/code]
Fonte do Servlet
[code]package net.itambe;
import java.io.;
import java.util.;
import javax.servlet.;
import javax.servlet.http.;
import org.apache.commons.fileupload.*;
public class uploadArquivoServlet extends HttpServlet{
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
PrintWriter out = response.getWriter();
if(FileUpload.isMultipartContent(request)){
String usuario = null;
DiskFileUpload upload = new DiskFileUpload();
Iterator iterator = null;
try{
iterator = upload.parseRequest(request).iterator();
}catch(FileUploadException exc){
exc.printStackTrace();
out.println("Erro processamento submissão: " + exc.getMessage());
return;
}
while(iterator.hasNext()){
FileItem item = (FileItem) iterator.next();
boolean isFormField = item.isFormField();
if(isFormField){
if(item.getFieldName().equalsIgnoreCase("nome")){
usuario = item.getString() == null ? "" : " " + item.getString();
}
}else{
String nomeArquivo = item.getName();
String path = getServletContext().getRealPath("/") + "WEB-INF/files/" + nomeArquivo;
try{
File file = new File(path);
item.write(file);
out.println("Obrigado" + usuario + " pela submissão.<br>");
out.println("O arquivo foi gravado em " + path + ".");
}catch(Exception exc){
out.println("Erro gravando arquivo: " + exc.getMessage());
}
}
}
}else{
out.println("Erro: página não pode ser acessada diretamente!");
}
}
}
[/code]
… já me falaram que o commons-fileupload.jar não está no classpath da aplicação web, e que para funcionar basta colocar este pacote dentro de WEB-INF/lib, mas está no WEB-INF/lib e no server/lib
Alguém sabe o que tá acontecendo ?
Valeuh!