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

.Jar não envia o email

Pessoal, estou com um problema onde a classe de serviço EmailSenderService não está sendo encontrada. Detalhe que quando eu executo pelo eclipse, funciona e envia o email. Mas pelo jar, infelizmente não está encaminhando. Segue o erro:

Caused by: java.lang.ClassNotFoundException: br.com.camaroti.alex.emailSender.emailSender.service.EmailSenderService
        at java.base/java.net.URLClassLoader.findClass(Unknown Source) ~[na:na]
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ~[na:na]
        at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:93) ~[viplist-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ~[na:na]
        ... 71 common frames omitted

O meu pom está ok, mas estou usando a versão 2.0.4 por estar utilizando uma versão mais atualizada do java.

<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.camaroti.alex.viplist</groupId>
    <artifactId>viplist</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
    </parent>


    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <!-- Exclude the Tomcat dependency -->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- Use Jetty instead -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.4.0-b180725.0427</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>br.com.camaroti.alex.emailSender</groupId>
            <artifactId>emailSender</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

         <!-- ojdbc7.jar example -->
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc7</artifactId>
            <version>12.1.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.195</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <jvmArguments>--add-modules java.xml.bind</jvmArguments>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.3.1</version>
                <executions>
                    <execution>
                        <id>install-oracle-jdbc</id>
                        <goals>
                            <goal>install-file</goal>
                        </goals>
                        <phase>clean</phase>
                        <configuration>
                            <groupId>com.oracle</groupId>
                            <artifactId>ojdbc6</artifactId>
                            <version>11.2.0</version>
                            <packaging>jar</packaging>
                            <generatePom>true</generatePom>
                            <createChecksum>true</createChecksum>
                            <file>${project.basedir}/src/main/resources/lib/ojdbc7.jar</file>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>
3 respostas

Oi Alex, quando você executa o mvn package, tudo é gerado sem reclamações? Pq o ClassNotFoundException indica que o jar do seu projeto de email não foi mandado junto com o fat jar gerado.

Opa Alberto,

Não dá pau não. Geralmente dou um clean, e depois um install -X em ambos. Retiro e coloco a dependencia no projeto principal. Subi até no github se quiser dar uma olhada com mais detalhes: https://github.com/alexcamaroti/java-spring-boot

solução!

Nossa, que parto para descobrir. Bom, o erro era que por ter gerado o emailSender pelo "Spring boot Initializr", veio com bastante coisa no pom.xml e por isso deve ter gerado algum conflito. Deixei assim:

<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.camaroti.alex.emailsender</groupId>
<artifactId>emailsender</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>emailsender</name>
<description>Demo project for Spring Boot</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-email</artifactId>
        <version>1.3.1</version>
</dependency>
</dependencies>
</project>

Outra coisa que me ajudou também, foi deletar o projeto do enviadorEmail apenas da IDE, para ver que o projeto realmente não estava enxergando a classe por algum motivo. Referencia: https://cursos.alura.com.br/forum/topico-aula-5-gerando-nosso-fatjar-o-jar-gerado-do-projeto-enviadoremail-da-erro-ao-enviar-um-e-mail-40659