Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Erro ao subir o tomcat (weld servlet)

Olá configurei o projeto para utilizar o maven. Porém quando tento subir o tomcat com o projeto livraria-maven recebo o seguinte erro.

GRAVE: Error configuring application listener of class [org.jboss.weld.environment.servlet.Listener]
java.lang.ClassNotFoundException: org.jboss.weld.environment.servlet.Listener
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1269)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1104)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:508)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:489)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:119)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4555)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5095)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1425)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1415)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:941)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:839)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1425)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1415)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:941)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:258)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:770)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:657)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)
11 respostas

Oi Fabio, tudo bem?

Qual versão do Tomcat vc está usando? De qualquer forma, uma tentativa seria remover o projeto do seu Eclipse, acessá-lo pelo terminal e rodar o comando mvn clean. Se mesmo assim não funcionar, posta o log completo do erro que a gnt tenta resolver =)

Olá Samir,

Estou usando o Tomcat 9.0. Removi o projeto do eclipse, executei o clean pelo terminal, mostrou um warning dizendo que tenho dependências duplicadas do primefaces mas executou com sucesso. Após isso importei novamente o projeto para o eclipse, fiz um run as -> clean compile package. Adicionei ao servidor tomcat e na hora se subir continuo recebendo o mesmo erro.

GRAVE: Error configuring application listener of class [org.jboss.weld.environment.servlet.Listener] java.lang.ClassNotFoundException: org.jboss.weld.environment.servlet.Listener

Fabio, No seu pom, Vc adicionou as dependências do cdi?

Olá Samir,

Adicionei essa dependência

<dependency>
            <groupId>org.jboss.weld.servlet</groupId>
            <artifactId>weld-servlet</artifactId>
            <version>2.3.2.Final</version>
        </dependency>

oi Fabio, tenta trocar por essa aqui:

<dependency>
      <groupId>javax.enterprise</groupId>
      <artifactId>cdi-api</artifactId>
      <scope>provided</scope>
    </dependency>

Olá Samir,

Troquei a dependência e o mesmo erro continua ocorrendo.

Fabio, o seu POM.xml esta como esse aqui?

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.caelum</groupId>
<artifactId>livraria-maven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>Livraria Alura</name>
<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
    <dependency>
        <groupId>org.jboss.weld.servlet</groupId>
        <artifactId>weld-servlet</artifactId>
        <version>2.3.3.Final</version>
    </dependency>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.1.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.primefaces</groupId>
        <artifactId>primefaces</artifactId>
        <version>5.3</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.1.0.Final</version>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.2.13</version>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.2.13</version>
    </dependency>
    <dependency>
        <groupId>org.primefaces.themes</groupId>
        <artifactId>all-themes</artifactId>
        <version>1.0.10</version>
    </dependency>
</dependencies>
<repositories>
    <repository>
        <id>prime-repo</id>
        <name>PrimeFaces Maven Repository</name>
        <url>http://repository.primefaces.org</url>
        <layout>default</layout>
    </repository>
</repositories>
</project>

Olá Samir,

O pom.xml está exatamente igual ao que você passou.

OI Fabio, isso é bem estranho. O erro que esta dando esta dizendo que uma classe do CDI não foi encontrada, mas o POM que vc está usando está com as dependências corretas. Vamos fazer o seguinte: na pasta do seu usuário, existe uma pasta chamada .m2. Apague essa pasta e dê um update do Maven no projeto, isso fará com que todas as dependências sejam baixadas novamente.

Olá Samir, continua o mesmo erro, já conferi e a classe se encontra no classpath do projeto, mas quando sobe o tomcat não consegue encontrar.

Oi Fabio, esse erro pode estar relacionado à algum bug estranho...

vamos fazer o seguinte, baixa esse projeto aqui (é o mesmo do curso já com o maven, testado aqui na minha máquina) e tenta importar ele na sua máquina:

https://drive.google.com/file/d/0B2LZABXJX6IyWk1jODE4VUxlQ3c/view?usp=sharing

Para importar: Botão direito no Package Explorer > Import > Existing Maven Project e ai coloca o projeto descompactado.

Não esquece de colocar os seus dados do banco no Persistence.xml e de configurar o Java Compiler para 1.8

Veja se funciona =)