Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Exception no login após migração para projeto maven

Olá,

Estou com um problema que surgiu após migrar o projeto para um projeto Maven. Após fazer os procedimentos da aula, permaneci recebendo o seguinte erro:

Archive for required library: 'C:/Users/daluc/.m2/repository/org/jboss/weld/servlet/weld-servlet/2.3.3.Final/weld-servlet-2.3.3.Final.jar' in project 'miniSGEP' cannot be read or is not a valid ZIP file miniSGEP Build path Build Path Problem

Estranho, pois o .jar aparecia nas Maven Dependencies

Tentei usar um Maven Update e executei um Maven Clean, porem surgiram varias exceções. Para tentar contornar o erro, substitui no pom.xml a versão 2.3.3 para a 2.4.7 (a mais recente no Maven Repository). Funcionou, parei de receber erros de compilação, executei um Maven Clean Package (sem erros), e recarreguei o projeto no TomCat.

A pagina de login abriu normalmente, porém ao inserir as credenciais e clicar no botão para submeter o formulário recebo a seguinte exceção:

jun 28, 2018 10:14:33 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
GRAVE: java.lang.NoSuchMethodError: org.primefaces.util.ResourceUtils.getComponentResources(Ljavax/faces/context/FacesContext;)Ljava/util/ArrayList;
    at org.primefaces.application.resource.DynamicResourcesPhaseListener.afterPhase(DynamicResourcesPhaseListener.java:31)
    at com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:189)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:107)
    at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:123)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

No curso essa etapa funcionou sem problemas, alguma dica do que pode estar ocorrendo ?

4 respostas

Oi Daniel, tudo bem ?

Não sei ao certo a causa do problema, mas meu chute é que você deveria manter o pom.xml igual ao do curso, deletar a pasta da dependência citada no primeiro erro (algo como rm -rf C:/Users/daluc/.m2/repository/org/jboss/weld/servlet/weld-servlet/2.3.3.Final/) e reconstruir o projeto com um Maven > Update Project > Force Update for Snapshots and Releases. Pode ser que na hora de baixar as dependências algo ocorreu errado e os arquivos ficaram corrompidos.

Olá Rafael,

Obrigado por sua resposta!

De fato ao remover o repositório local e atualizar o projeto, finalmente consegui usar weld na versão 2.3.3, ou seja, o pom está igual ao usado no projeto. No entanto, o que a exceção que relatei continua ocorrendo.

Não estou conseguindo entender o que exatamente esta errado pois a stacktrace que recebo não passa por nenhuma linha especifica do meu código.

Como ela continha "Ajax" no nome fiz o seguinte teste:

-> como a exceção estava ocorrendo ao clicar no botão de login do respectivo formulário, tirei o ajax da jogada usando o componente do jsf padrão (namespace h:). Com isso o, funcionou normalmente e consegui logar na aplicação.

Nas demais telas da aplicação, ao clicar em qualquer botão (como todos são componentes prime faces, logo usam ajax) recebo a mesma exceção. Lendo a stacktrace me parece que o fato de usar Ajax está gerando problema no ciclo de vida padrão do JSF já que passamos pelo método "RestoreViewPhase"... Enfim, alguma sugestão a cerca do que posso verificar no meu código que possa está relacionado a este problema ?

solução!

Qual a versão do primefaces utilizada no curso ? Vi aqui uma dúvida semelhante (apresenta o mesmo error) e a solução foi descer da versão 6 pra versão 5.3

https://cursos.alura.com.br/forum/topico-java-lang-nosuchmethoderror-30187

Estava na versão 5.1

Passou a funcionar quando mudei para a versão 6.0

Obrigado!