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

Solucionado (ver solução)

Servlet MVC jogando exceção

Car@s,

Na lição de desenvolvimento de Servlet MVC, ao rodar meu código o servidor acusa uma exceção em todos os comandos (ListaEmpresas, NovaEmpresa, etc).

O mesmo problema já havia ocorrido na lição anterior, sempre onde um try/catch foi colocado.

Alguém consegue me ajudar a encontrar o problema? Muito obrigado!!!

PS: abaixo o aviso de erro e, logo após, meu código.


Type Exception Report

Message java.lang.ClassNotFoundException: br.com.alura.gerenciador.acaoListaEmpresas


package br.com.alura.gerenciador.servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.alura.gerenciador.acao.Acao;

@WebServlet("/entrada")
public class UnicaEntradaServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String paramAcao = request.getParameter("acao");

        String NomeDaClasse = "br.com.alura.gerenciador.acao" + paramAcao;

        String nome;
        try {
            Class classe = Class.forName(NomeDaClasse);
            Acao acao = (Acao) classe.newInstance();
            nome = acao.executa(request, response);
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
            throw new ServletException(e);
        }

        String[] tipoEEndereco = nome.split(":");

        if (tipoEEndereco[0].equals("forward")) {
            RequestDispatcher rd = request.getRequestDispatcher("WEB-INF/view/" + tipoEEndereco[1]);
            rd.forward(request, response);
        } else {
            response.sendRedirect(tipoEEndereco[1]);
        }
2 respostas
solução

Bom dia, Rodrigo! Como vai?

Me parece que faltou um . no trecho

String NomeDaClasse = "br.com.alura.gerenciador.acao" + paramAcao;

o correto seria

String NomeDaClasse = "br.com.alura.gerenciador.acao." + paramAcao;

como visto nessa aula!

Faça essa correção e veja se as coisas funcionam como esperado!

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Bom dia, Gabriel.

Perfeito!!

Muito obrigado!