Erro: java.lang.NoClassDefFoundError

8 respostas
E

Olá,

Uso struts. Quando tento rodar uma aplicação no eclipse dá o seguinte erro…

ERROR [[action]] Servlet.service() for servlet action threw exception
java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	at java.lang.Class.getConstructor0(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:231)
	at org.apache.struts.util.RequestUtils.getMultipartHandler(RequestUtils.java:1318)
	at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1194)
	at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
	at java.lang.Thread.run(Unknown Source)

já adicionei ao projeto o pacote commons-fileupload-1.2.jar (no mesmo diretório que as outras libs), mas o erro continua.

Algúem sabe o que pode ser?

Grata

8 Respostas

vanderlanio

Não sei se ira adiantar, mais nunca se sabe neh rs

Na Doc do struts 2 ele pede a versão 1.1.1 do fileupload , substitui ai e testa rs !

http://struts.apache.org/2.x/struts2-core/dependencies.html

tecdanilo

Olá, nunca usei o struts mas creio que vc deva ter colocado apenas os pacotes dentro da pasta lib, é isto?

No eclpipse é necessário clicar em propriedades --> javaBuildPath --> e mostrar o caminho dos pacotes por lá.

É possivel também que vc não tenha posto todos os pacotes necessários para o funcionamento do fileUpload.

Espero ter ajudado.

Té+. :smiley:

Claudio_Nazzari

Tente colocar o Jar direto na pasta lib no tomcat(common/lib)…
Voce sobe o tomcat pelo eclipse?

E

Obrigada a todos pelo auxílio!

Estou usando essa versão mesmo, vanderlanio.

tecdanilo, inseri exatamente dessa forma no projeto.

Claudio Nazzari,

Não entendi, como faço isso?

Claudio_Nazzari

Qual diretorio esta colocando o jar? O que voce utiliza para rodar o projeto? Voce usa ANT ou roda direto do eclipse?
Se voce usa o TomCat como servidor de aplicação, entre no diretorio onde esta o toncat e coloque o jar commons-fileupload-1.2.jar dentro do diretorio tomcat\common\lib.
Se o jar nao estiver nem nesta pasta nem no lib do WEB-INF, ele nao vai encontrar, por mais que voce insira ele no classpath.

E

o jar está dentro de workspace/lib (assim como todos os outros jar utilizados), o projeto tb está dentro de workspace.

Para rodar o projeto utilizo o ant mesmo.

Uso o jboss como servidor. Como vc orientou, coloquei o commons-fileupload.jar na pasta onde estão os outros jar.
(simplesmente ctrl c, ctrl v, se é q é possível colocar de outra forma…).
Não tenho como rodar a aplicação agora, mas assim q der vou testar para ver se essa solução vai funcionar.

Obrigada.

Veneno

voce fez isso:

tem que indicar onde estão suas bibliotecas…

clica em cima do projeto botão direito ----> propriedades --> …
libraries -->>

E

Pessoal,

agora tá aparecendo este erro:

java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
	at org.apache.commons.fileupload.DefaultFileItemFactory.createItem(DefaultFileItemFactory.java:103)
	at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:350)
	at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:302)
	at org.apache.struts.upload.CommonsMultipartRequestHandler.handleRequest(CommonsMultipartRequestHandler.java:233)
	at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1209)
	at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
	at java.lang.Thread.run(Unknown Source)

como achei que o erro era o mesmo, anexei o pacote commons-io, configurei o build path... a mesma coisa do commons fileupload.jar, mas continua.

outro detalhe, só estou conseguindo testar até aí porque coloquei dois if's no método no Action:

public ActionForward execute(
    ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response) throws Exception{
		
	if(form!=null){
		
	    StrutsUploadForm myForm = (StrutsUploadForm)form;
	    
        FormFile myFile = myForm.getTheFile();
        
        if (myFile!=null){
	        String contentType = myFile.getContentType();
	        String fileName    = myFile.getFileName();
	        int fileSize       = myFile.getFileSize();
	        byte[] fileData    = myFile.getFileData();
			   System.out.println("contentType: " + contentType);
			   System.out.println("File Name: " + fileName);
			   System.out.println("File Size: " + fileSize);
        }
      }
      return mapping.findForward("success");
  }

sem os if's nem entra, dá

09:54:51,133 ERROR [[action]] Servlet.service() for servlet action threw exception
java.lang.NullPointerException
	at Upload.StrutsUploadAction.execute(StrutsUploadAction.java:42)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
	at java.lang.Thread.run(Unknown Source)

alguém aí pode ajudar?
desculpem se a dúvida é meio besta, tá? é que estou começando agora. Já olhei a solução em outros tópicos, faço aqui e não muda nada.

Criado 15 de outubro de 2007
Ultima resposta 18 de out. de 2007
Respostas 8
Participantes 5