25
respostas

Status 404 na /oi, porém na /bem-vindo.html aparece normal

Não esou conseguindo abrir sem erro a http://localhost:8080/gerenciador/oi. Não há erro ao iniciar o tomcat. A página http://localhost:8080/gerenciador/bem-vindo.html abre normal. Parece que não está reconhecendo a anotação @WebServlet(urlPatterns="/oi").

package br.com.alura.gerenciador.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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

@WebServlet(urlPatterns="/oi")
public class OiMundoServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {

        PrintWriter out = resp.getWriter();
        out.println("<html>");
        out.println("<body>");
        out.println("oi mundo, parabens vc escreveu o primeiro servlets.");
        out.println("</body>");
        out.println("</html>");

        System.out.println("O Servlet OiMundoServlet foi chamado");

    }
}    
25 respostas

Fala, André! Tudo bem contigo?

Desculpe a demora em dar um retorno

Rodei seu código e não vi nenhum erro de escrita e o primeiro ponto que eu olharia seria se esta rodando na porta 8080, porém como já subiu o "bem vindo", descartamos essa hipótese.

Outro ponto, qualquer mudança que faça nos arquivos, reinicie seu Tomcat para que ele suba uma nova conexão. Permanecer na mesma pode gerar um cache com as escritas antes das modificações.

Mesmo assim, se não tiver sucesso, André, com o botão direito sobre o Tomcat escolha Clean Tomcat Work Directory para limpar os caches e prefira abrir seu localhost em abas anônimas para evitar que o browser salve o cache da página e atrapalhe em mostrar suas novas atualizações no código!

Faça esses testes e nos dê um retorno!

Fico no aguardo!

Um abraço

Boa noite Cássio,

O problema permanece o mesmo. Fiz tudo que vc orientou. Também realizei limpeza dos chaches dos navegadores, tentei abrir em navegadores(com abas anônimas) distintos, porém permanece tudo da mesma forma.

Tem como eu enviar para você a pasta do meu projeto?

Opa, André! Tem sim!

Consegue subir para seu GitHub e enviar o link para mim?

Assim eu consigo baixar seu projeto na minha máquina e dar uma olhada o que está ocorrendo.

Fico no aguardo!

Olá Cássio, segue a URL do projeto no github: https://github.com/AndreLuSantana/Servlet

Fala, André! Tudo bem contigo?

Desculpe a demora e dar esse retorno.

Eu baixei seu projeto, rodei e p/ minha surpresa, estava dando o erro 404, mesmo idêntico ao meu.

Testava meu projeto, subia normalmente e quando rodava o seu dava erro.

Em conjunto com o Thiago Yuji, do nosso time, ele deu uma analisada nas configurações da sua aplicação e dentro do seu web.xmle foi notado que existe uma anotação chamada metadata-complete

<web-app version="4.0" id="WebApp_ID"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    metadata-complete = "true"
    >

Essa anotação dada como true todas as anotações nas Classes não serão processadas. Ele vai ignorar, e por consequência não subirá sua aplicação com a anotação @WebServlet(urlPatterns="/oi"), que é a que precisamos.

Vamos remover essa metadatae agora teremos o que desejamos!

Faça esse teste e nos dê um retorno, André!

Um abraço!

Cássio eu realmente não entendo. Removi metadata, mesmo assim não deu certo. Então resolvi reinstalar meu Eclipse para a última versão e comecei do zero, seguindo passo a passo para criação do projeto. Criei a classe novamente, criei o arquivo .html e fiz a conexão com o Tomcat. Então usei aba anônima para fazer as requisições. O arquivo .HTML abre normal, porém a URL "http://localhost:8080/gerenciador/OiMundoServlet"(deixei o urlPatterns="/OiMundoServlet"), não sobe. Continua com o mesmo erro, devolvendo status 404. Não entendo o porque que o bem-vindo.html sobe e o a url não.

Tem algum tipo de configuração no Eclipse a ser feito? Estou perdido mesmo

Opa pessoal... vou acompanhar o desenrolar deste assunto, pois estou tento o mesmo problema. Apaguei o arquivo web.xml todo e nada muda.

O.O

Fala, André! Vamos resolver isso aí!!!

Vou descrever os passos que fiz com base no seu projeto do GitHub, tudo bem?

Aqui está meu Eclipse somente com a pasta Servers do meu tomcat e ele aparecendo ali em baixo

Imgur

Baixei seu projeto e extrai diretamente dentro do meu Workspace para que não perca nada, caso eu descompacte em outro lugar e perca ao copiar para cá

Imgur

Feito isso, vou em file e depois import no Eclipse, busco a pasta, confirmo se apareceu o projeto no campo Projects e Finish

Imgur

Bacana! Seu projeto já está no meu Workspace

Imgur

Agora vou adequar ao meu JDK, pois apareceu para mim que o seu é o 11.0.8 na aba Problems. Acredito que constará esse problema p/ ti, pois se você baixou a nova versão do JDK e desinstalou a antiga, terá que seguir esses passos.

Imgur

Clico com o botão direito sobre o erro Unbound ... e escolho Quick Fix. Na aba, dou um Finish

Imgur

Deixo marcado o JRE System (aparecerá uma marcação vermelha mostrando o erro) e Removo

Imgur

A seguir, clico sobre Classpath e Add Library

Imgur

Escolho JRE System Library. Next

Imgur

Confirmo se o Eclipse mesmo já encontrou meu JDK e Finish

Imgur

Agora os erros sumiram

Imgur

Clico e arrasto o projeto para dentro do Tomcat na aba Servers

Imgur

Subo a aplicação e abro uma página. Digito primeiro o bem-vindo.htmle temos o resultado positivo

Imgur

Até aqui, perfeito!!!

Vamos digitar o /oie temos o famoso erro 404

Imgur

Lá no arquivo web.xmltemos a anotação METADATA

Imgur

Vou remover somente essa linha

Imgur

Paro a aplicação, e subo novamente (pode ser que você tenha que fazer isso duas vezes)

Imgur

Agora dei um "Refresh" na página e eis que aparece

Imgur

Faça isso com seu arquivo do GitHub, André!

Baixe ele e siga esse passo a passo!

Desculpe tantas imagens, mas não quero que algum detalhe passe despercebido.

Fico no aguardo do seu retorno e caso não dê certo, vamos ver a possibilidade de fazermos uma call, meu amigo!!!

Até breve

Caro Cássio,

Passo a passo realizado, no entanto permanece do mesmo jeito.

Vamos resolver

Fico no aguardo!

Pessoal, acompanhei o passo a passo aqui tbm e nada de diferente acontece.

Caso seja solucionado o problema via conferência, poderia postar aqui a resolução? Obrigado.

Olá, Lucas! Tudo bem?

Realmente o problema não era no código e acredito que seja o mesmo que está acontecendo contigo

Clique com o botão direito sobre o seu Tomcat e escolha delete e dê um "ok"

Imgur

Feito isso, vamos escolher um novo server. Basta clicar em No server are available. Click ...

Imgur

Abrirá uma janela para escolher teu server. Abra a pasta Apache e dentro dela escolha qual a versão do seu Tomcat. No meu caso é a 9.0

Imgur

Agora, vamos adicionar o seu projeto no Tomcat. Escolha ele e clique em Add

Imgur

Ficará dessa forma abaixo:

Imgur

Finish

Vamos as configurações do Tomcat (que é onde está o problema)

Com o botão direito sobre o Tomcat, escolha Properties.

Abrirá uma janela onde o seu Location estará marcado como Workspace Metadata.

Clique em Switch Location

Imgur

Vai alterar para o endereço do seu Tomcat

Imgur

Apply and Close

Agora vamos dar dois cliques no seu Tomcat para abrir a janela Overview

Lá, existirá um campo chamado Server Locations. Dentro dele escolha a opção do meio: Use Tomcat Installation...

Imgur

CRTL+ S para salvar

Agora é só subir o servidor!

Abra seu navegador e digite: localhost:8080

Isso fará com que abra a página do Tomcat, pois significa que o servidor está no ar.

É só complementar com /gerenciador/oi

Nos dê um retorno se deu tudo certo, Lucas!

Um abraço e bons estudos!

Olá Cássio olha eu aqui novamente. :-) Hoje pela parte da manhã fui dar sequencia no curso. Criei uma nova classe, startei o Tomcat e abri no browser, o bendito "404" apareceu. Porém a classe que OiMundoServlet.java continuou funcionando. Estão realizei o "clean" e o "CLean Tomcat Work Directory..." e a outra classe continuou sem funcionar. Então resolvi testar alterando algo na classe OiMundoServlet.java, então veio a surpresa, a classe sobe porém sem as alterações que eu implementei. Exclui o servidor e refiz os passos que fizemos ontem, o html sobe, a página do Tomcat sobe, a classe OiMundoServlet sobe sem as alterações e a outra classe simplesmente não sobe. O que será que esse Tomcat está aprontando comigo desta vez. rsrsrsrsrsrs

Olá, André!

Acredito que seja problema de cache do navegador. Acontece muito!

Suba p/ seu GitHub novamente que vou dar uma olhada!

Vou testar aqui na minha máquina!

A princípio, limpe o cache do seu navegador e depois rode o projeto em uma página anônima!

Fico no aguardo, amigo!

Cássio, permanece da mesma forma. Limpei o cache e testei no Chrome, FireFox e no Safari todos apresentaram comportamento semelhante. Ao startar o Tomcat os arquivos .html sobem normal, localhost:8080 abre a página do Tomcat, localhost:8080/gerenciador/oi abre normal porém sem a implementações atuais e as demais classes não.

Inclusive criei outro projeto com uma classe servlet, deletei o servidor criei outro inclui os projetos e fiz os procedimentos que realizamos ontem. Neste projeto novo as páginas HTML e localhost:8080 funcionam normal, porém a classe não.

Projeto Alterado https://github.com/AndreLuSantana/Servlet2/tree/master

Projeto Criado https://github.com/AndreLuSantana/Servlet3

Poisé Cassio, Segui todos os passos por você descritos, porém nada mudou. Reinstalei o Tomcat, limpei o cache do Chrome e tentei acessar por uma página anônima e nada. Segui o mesmo procedimento pelo Firefox e nada também.

André e Lucas!

Fiz dois vídeos, um para o Projeto Alterado e outro para o Projeto Criado, ambos baixados do GitHub do André, com seus devidos testes e possibilidades de erro

Acredito que vai ajudar!

  • Projeto Alterado: Link
  • Projeto Criado: Link

Fico no aguardo do retorno de vocês para saber se correu tudo bem!

Um abraço!

Mesmo problema aqui. Fiz todos os procedimentos apresentados pelo Cássio, porém, sem sucesso. A página estática bem-vindo.html aparece normal quando acesso pela URL já a URL http://localhost:8080/gerenciador/oi dá 404

Estou com o mesmo problema. Vejo a dedicação do Cássio em ajudar, mas, mesmo seguindo TODOS os passos, nada muda. Já deletei todos os projetos desenvolvidos e o servidor Tomcat e iniciei do zero. Fiz isso já umas 3x... nada mudou.

Estou muito desapontado e frustrado com isso. Mais de 1 mês sem dar andamento ao curso...

Qual alternativa tenho? Outro sistema de servidor? Existe algum outro caminho para seguirmos com a formação Java Spring?

Isso precisa ser resolvido.

Consegui ajeitar por aqui. o meu JDK é o 15. Na aba "libraries", no "project explorer", onde tem "JRE System Library"... Cliquei com o botão direito do mouse, fui em "build path" -> "configure buildpath" Na janela que abriu, selecionei o JRE System Library e cliquei em "edit" Selecionei "alternate JRE" e cliquei em "installed JRES". cliquei em "add", selecionei "standard VM", cliquei em next, e em "JRE HOME" selecionei o diretório onde meu jdk-15.0.2 tá instalado. Dei Apply em Choose e o 404 que tava dando nos servlets desapareceu e a página renderizou normalmente.

Fala, Rodrigo! Tudo bem contigo?

O Estava configurado uma outra JRE?

Que bacana que conseguiu!

Tomara que ajude os demais!

Vamos aguardar para ver se eles também conseguiram dessa forma!

Estou acompanhando!!!

Oi, Cassio. Tudo certo? Isso, verifiquei que o projeto estava apontando pra uma JRE desatualizada no meu SO Apontei pra pasta correta do jdk 15 e resolveu.

Bacana, Rodrigo!

Vamos ver se com nossos colegas eles consigam através dessa sua solução!

Obrigado por compartilhar conosco, Rodrigo!!!

estou com o mesmo problema mas além de não conseguir aparece o seguinte erro Errors occurred during the build. Errors running builder 'Java Builder' on project 'gerenciador'. Provider "jar" not found

Fala, Yuri!

Com o botão direito sobre o projeto entre em build path -> configure build path.

Na aba librariesveja se em modulepossui seu JRE. Caso não, selecione module e clique em Add External JARs... e aponte para o caminho onde está seu JDK.

Acredito que isso vá resolver!!!

Nos dê um retorno para sabermos se deu certo!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software