7
respostas

Erro ao subir o tomcat jaxb

Olá a todos, Ao tentar subir a minha aplicação no tomcat sempre apresenta a esta exception já tentei utilizar o que foi proposto em aula --add-modules java.xml.bind direto nas configurações do Eclipse além das configurações do meu POM e nada resolveu. Segue abaixo o erro .

Estou utilizando: tomcat 9.0.34 java 11.0.7 open-jdk S.O Ubuntu Obrigado

GRAVE: Exceção ao enviar evento de contexto iniciado para instância listener da classe [org.springframework.web.context.ContextLoaderListener]
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
7 respostas

Olá Thiago, tudo bem com você?

Eu tive o mesmo erro e não funcionou com as mudanças propostas, até eu adicionar a seguinte dependência:

    <dependency>
          <groupId>jakarta.xml.bind</groupId>
          <artifactId>jakarta.xml.bind-api</artifactId>
          <version>2.3.3</version>
    </dependency>

Você pode estar testando?

Abraços!

Olá Geovani tudo bem

Então testei aqui e não deu certo também. Vou enviar meu POM, as vezes tem alguma coisa que posso estar deixando passar

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>br.com.cadadocodigo</groupId>
    <artifactId>loja</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>1.11</source>
                    <target>1.11</target>
                </configuration>
            </plugin>
        </plugins>
    </build>


    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.1.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-servlet-api</artifactId>
            <version>7.0.30</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl-api</artifactId>
            <version>1.2</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.glassfish.web</groupId>
            <artifactId>jstl-impl</artifactId>
            <version>1.2</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>1.6.1</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.1</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.2.3.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.3.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.1-api</artifactId>
            <version>1.0.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>4.1.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.3.1.Final</version>
        </dependency>

        <dependency>
            <groupId>jakarta.xml.bind</groupId>
            <artifactId>jakarta.xml.bind-api</artifactId>
            <version>2.3.3</version>
        </dependency>

    </dependencies>

</project>

Abraços

Opa Thiago, pior que seu pom.xmlestá certinho

Agora eu tenho uma dúvida após você adicionar a dependência que eu pedi, você retirou o --add-modules java.xml.bind do arguments dentro de run configurations ?

Caso não, essa foi a razão de não ter ido, peço que deixe da maneira inicial, começando com: -Dcatalaina.base=" para que funcione corretamente, caso contrário ele iria apenas dizer que não há o modulo :)

Para garantir eu peguei novamente o projeto e simulei o seu erro com sucesso, para corrigir eu tentei uma outra dependência com o mesmo objetivo e deu certo:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>

Pode tentar utilizar essa ? Removendo os parâmetros do run como eu citei :)

Abraços!

Sim, eu retirei o --add-modules java.xml.bind até pq o meu tomcat nem estava subindo quando eu coloco ele. Ele apresenta o seguinte erro:

java.lang.module.FindException: Module java.xml.bind not found

Obrigado. Não sei se pode ser algo no código, hoje ainda pretendo dar mais uma revisada nele para ver se encontro mais algum erro.

Edit: Revisei o meu código com o que foi passado em aula e não encontrei nenhum erro que pudesse estar causando a exceção. Creio que deva ser alguma coisa no meu tomcat já que ele não reconhece nem o comando --add-modules java.xml.bind

Então Thiago,

A questão é que a partir do java 11 essa parte do --add-modules java.xml.bind também não funciona, eu também estou utilizando a versão 11 e ao tentar adicionar esse comando no tomcat tenho o mesmo erro que você citou

O que acredito ser mais estranho é que mesmo adicionando as dependências que eu sugeri não funcionou, correto?

Essas dependências tem o mesmo objetivo que é trazer os módulos que estão faltando para o projeto, para voltar a funcionar corretamente

Vamos tentar então fazer um downgrade do javax.validation e do hibernate, modificando para as versões utilizadas no curso, para o nosso pom.xml na parte final ficar assim:

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.0.0.GA</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.2.0.Final</version>
</dependency>
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>

Após isso com botão direito na pasta do projeto faça um maven > update project para atualizar :)

O ideal para esse problema, que acredito que a Alura está trabalhando é na atualização do curso para versões mais recentes utilizando coisas do Java11e superior, ou utilizar a jdk 1.8 para evitar esse problema

Mas pode testar essa última mudança citada ?

Abraços!

Olá Geovani,

Então havia colocado estas dependências até havia feito o que está apresentado neste artigo da Caelum https://blog.caelum.com.br/erros-com-jaxb-no-java-9/ e não funcionou, cheguei ao ponto de colocar os jars na mão dentro do projeto e nada. Estou pensando em tentar instalar outra JDK aqui para ver se funciona.

Caso não seja incomodo, teria como vc olhar meu código se eu deixar um link do github? Eu revisei os códigos apresentados no curso e aparentemente não encontrei erro.

Obrigado

Olá Geovani, Peguei o código deixado pelo instrutor no ponto em que parei e coloquei as dependências para o jaxb e rodou o projeto sem problemas. Vou comparar o meu projeto com este deixado pelo instrutor que certamente deve ser algum outro erro meu. Assim, que descobrir o erro, posto aqui

Obrigado