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

Projeto não roda

Bom dia!!!

O projeto está apresentando erro e não é executado, ao criar o pacote br.com.alura.gerenciador.modelo e transferir as classes Banco e Empresa, o projeto para de funcionar, notei que a página listaEmpresas.jsp apresenta erro no import (<%@ page import="java.util.List,br.com.alura.gerenciador.modelo.Empresa"%>), quando retiro esse import o projeto volta a funcionar, porém quando tento acessar http://localhost:8080/gerenciador/entrada?acao=ListaEmpresas, após o servlet UnicaEntradaServlet ter sido criada, não consigo acessá-lo, aparecendo o erro 404. Alguém poderia dá um help nessa situação, já baixei o projeto novamente, fiz toda a reinstalação, mas nada ainda. Desde já agradeço.

15 respostas

Oie Ederson, tudo bem contigo?

Realmente esse "import" é desnecessário para o funcionamento do projeto nesse momento. Acredito que o problema provavelmente está relacionado ao "cache" do eclipse ou no servlet "UnicaEntradaServlet".

Se for relacionado ao eclipse ou ao tomcat, bastar dar um "clean" nessas duas ferramentas, para isso:

No eclipse: -> No menu na parte superior do eclipse -> clique "Project" -> "Clean" -> selecione o projeto que deseja "limpar" -> clique em "Clean".

Foto mostrando aonde clicar para dar clean no projeto

No tomcat: Na aba servers na parte inferior do eclipse -> clique com o botão direito do mouse em cima do servidor TomCat -> selecione a opção "Clean" -> clique em "Ok".

Foto mostrando como dar clean no tomcat

Caso nenhuma dessa soluções funcione, vou precisar dar uma olhada no seu código da "UnicaEntradaServlet"", se puder enviar por aqui ou talvez subir seu projeto no github, qua ai conseguirei te ajudar melhor.

Aguardo sua resposta!

Bons estudos :)

Opa Amigão, valeu pelo retorno, infelizmente não funcionou, mas eu já havia tentado fazer isso, já baixei o projeto novamente, já reinstalei o TomCat, mas nada ainda, já bati cabeça e nada, vou te mandar o código, mas parei no primeiro momento da explicação. Não sei se foi alguma configuração no xml no curso anterior ou se tem relação com as variáveis de ambiente, se puder me ajudar eu agradeço.

package br.com.alura.gerenciador.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@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"); 

        if(paramAcao.equals("ListaEmpresas")) {
            System.out.println("listando empresas");
        } else if(paramAcao.equals("RemoveEmpresa")) {
            System.out.println("removendo empresa");
        } else if(paramAcao.equals("MostraEmpresa")) {
            System.out.println("mostrando dados da empresa");
        }
    }

}

Dei uma olhadinha no seu código e acho que sei qual o problema.

O erro 404 acontece quando o navegador conseguiu conversar com o servidor mas não conseguiu achar a página que você buscou, e isso aconteceu porque na sua "UnicaEntradaController" você não determina qual classe de "acao" deve ser chamada.

Segue o código determinando a chamada do ListaEmpresas:


@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"); 

        if(paramAcao.equals("ListaEmpresas")) {
            System.out.println("listando empresas");

            ListaEmpresas acao = new ListaEmpresas();
            acao.executa(request, response);

        } else if(paramAcao.equals("RemoveEmpresa")) {
            System.out.println("removendo empresa");
        } else if(paramAcao.equals("MostraEmpresa")) {
            System.out.println("mostrando dados da empresa");
        }
    }

}

E claro, você vai precisar que a classe "ListaEmpresas" tenha sido criada.

Todo esse processo que eu comentei aqui, acontece no decorrer da aula que você já estava assistindo.

Faz essa corrigida no seu código e da uma olhada no fim dessa aula e vê se você consegue resolver esse problema.

Qualquer coisa é só mandar mensagem :)

Fala amigão, muito obrigado pelos retornos, mas infelizmente não funcionou, dessa vez finalizei todo o código do vídeo, mas mesmo assim nada, mas notei que quando digito http://localhost:8080/ não abre a página inicial do TomCat, porém quando digito no navegador http://localhost:8080/gerenciador/ eis que surge a mensagem "Bem vindo no curso Servlets da Alura! ".

O link http://localhost:8080/gerenciador/listaEmpresas dá o erro 404, porém quando digito http://localhost:8080/gerenciador/listaEmpresas.jsp ele mostra a página sem nenhum cadastro. Se puder me ajudar novamente, agradeço.

Opa Ederson, tudo bem?

Pelo que eu entendi, lendo a conversa me veio uma pergunta.

As jsps estão no diretório WEB-INF? Se sim, no seu service da classe UnicaEntradaServlet vc precisa retornar uma string do método executa que irá conter a jsp. Use um redirect para isso.

Poderia postar o código da action de ListarEmpresa para analisarmos juntos?

No aguardo

Valeu pelo retorno, quebrando a cabeça com esse problema...

Sim, as .jsp estão no diretório WEB-INF, segue o código para análise.

package br.com.alura.gerenciador.servlet;

import java.io.IOException;

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.ListaEmpresas;


@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"); 

        if(paramAcao.equals("ListaEmpresas")) {

            ListaEmpresas acao = new ListaEmpresas();
            acao.executa(request, response);

        } else if(paramAcao.equals("RemoveEmpresa")) {
            System.out.println("removendo empresa");

        } else if(paramAcao.equals("MostraEmpresa")) {
            System.out.println("mostrando dados da empresa");
        }
    }

}
package br.com.alura.gerenciador.acao;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.alura.gerenciador.modelo.Banco;
import br.com.alura.gerenciador.modelo.Empresa;
import br.com.alura.gerenciador.servlet.IOException;
import br.com.alura.gerenciador.servlet.List;

public class ListaEmpresas {

    public void executa(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        System.out.println("listando empresas");

        Banco banco = new Banco();
        List<Empresa> lista = banco.getEmpresas();

        request.setAttribute("empresas", lista);

        RequestDispatcher rd = request.getRequestDispatcher("/listaEmpresas.jsp");
        rd.forward(request, response);
    }

}

Aguardo seu retorno e te agradeço.

Show demais!! Faz um teste alterando essa linha na action de ListarEmpresas.

RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/listaEmpresas.jsp");

Aguardo retorno.

Obrigado amigo pela ajuda, mas não funcionou, a frustração começa bater à porta...Farei o download do projeto e tentarei colocar em outro computador com uma nova instância do Eclipse e do TomCat, pra ver se o erro permanece, no entanto queria resolver esse que estou passando. Segue a imagem para avaliar o que está ocorrendo.

Imgur

consegue me mandar um zip do seu projeto para analisar aqui?

thiagopaschoal076@gmail.com

Estou nessa sala também até as 18, se precisar de ajuda

https://meet.google.com/edm-xmsk-ysi

Agradeço pela colaboração, mandei o projeto via e-mail.

Opa Ederson, consegui executar aqui. Basta agora vc mover os arquivos *.jsp para dentro da pasta WEB-INF.

Faça um primeiro teste movendo a listaEmpresa.jsp. E antes de testar verifique os imports da sua classe ListarEmpresa.

Olhando aqui tbm vi que vc estava importando List do pacote errado. Ela é do pacote java.util.List

Me avisa, se deu certo

Thiago Sakurai Paschoal, não funcionou, gostaria de participar desse meet, por favor.

Assim que finalizar a reunião eu vou entrar

solução!

Desculpa man!! Minha net caiu aqui!

Fico feliz q deu certo!! Qlqr dúvida, não deixe de postar no fórum

Um abraço e bons estudos!!! :-)

Valeu Thiago, pelo auxilio e por dispender do seu tempo para me ajudar. Agradeço.