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

Arquivo não encontrado

Bom dia, fiz toda configuração conforme o curso, porém ele da o erro HTTP Status [404] – [Not Found], segue os códigos:

package br.com.casadocodigo.loja.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HomeController {

    // Defini que o metodo atenda uma determinada path ou endereço
    @RequestMapping("/")
    public String index(){
        System.out.println("Entrando na Home da CDC");
        return "home";
    }
}
package br.com.casadocodigo.loja.conf;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class ServletSpringMVC extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null;
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] {AppWebConfiguration.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] {"/"};
    }


}
package br.com.casadocodigo.loja.conf;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import br.com.casadocodigo.loja.controllers.HomeController;

// Recurso Web MVC
@EnableWebMvc
// Encontrar caminho do pacote onde o spring encontrara os controllers
@ComponentScan(basePackageClasses={HomeController.class})
public class AppWebConfiguration {

    // Gerar classe gerenciada pelo Spring com o bean
    // Ajuda spring encontrar as vies (Resolvedor interno de recursos de view)
    @Bean
    public InternalResourceViewResolver internalResourceViewResolver(){

        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/"); 
        resolver.setSuffix(".jsp");

        return resolver;
    }
}

Qual poderia ser o problema?

29 respostas

Maria Caroline Bueno, Verifica se dentro do folder src/ foi deletado o arquivo index.html e verifica também se o home.jsp está criado certinho.

Diretorio mostrado no curso: index.html -> src/webapp/index.html home.jsp -> src/webapp/WEB-INF/views/home.jsp

Depois da configuração do RequestMapping para "/" é necessário deletar o index.html pois isso gera conflito.

Ola, está certinho, segue o print: https://uploaddeimagens.com.br/imagens/capturar-png--4070

Poderia tirar o print do browser com a ferramenta do desenvolvedor (console ou network) aberta e print do console do eclipse.

Posso sim, segue: https://uploaddeimagens.com.br/imagens/capturar-png--4071

O que poderia ser feito?

Boa tarde Maria, analisando o que você mandou, seu spring não está sendo inicializado pelo tomcat. Dá um clean no projeto, um clean no tomcat e tenta denovo por favor

Boa tarde, ele continua com o mesmo erro, dei o clean no projeto e no maven, e continua dando o erro 404, Segue minhas dependecias :

  <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>9.0.0.M20</version>
    </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>
</dependencies>

Dá um clean no seu tomcat, porque as vezes ele não fez o deploy dos arquivos de conf. do Spring

Maria,

Você criou o projeto via Jboss?

tenta isso: Usa a annotation @Configuration na AppWebConfiguration como no exemplo abaixo:

// Recurso Web MVC
 @Configuration
@EnableWebMvc
// Encontrar caminho do pacote onde o spring encontrara os controllers
@ComponentScan(basePackageClasses={HomeController.class})
public class AppWebConfiguration {

    // Gerar classe gerenciada pelo Spring com o bean
    // Ajuda spring encontrar as vies (Resolvedor interno de recursos de view)
    @Bean
    public InternalResourceViewResolver internalResourceViewResolver(){

        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/"); 
        resolver.setSuffix(".jsp");

        return resolver;
    }
}

A anotação diz que a classe é de configuração SpringMVC.

att.

Eu removi o projeto e adicionei de novo como tipo maven, deu os seguintes problemas:

https://gist.github.com/anonymous/bdc0efd4777adab8c4200cf8f455bd83

Thiago, não funcionou

Alguma outra possibilidade de solução?

Maria,

ok, o código que você criou estão certos, o problema está na configuração inicial, no curso é feito pelo Jboss Forge, seria interessante você manter esse projeto e criar um outro com o Jboss Forge e ver se funciona. E depois comparar a configuração dele (.classpath, pom.xml).

segue o passo a passo do Jboss Forge para windows : Faça o Download:

https://forge.jboss.org/download (clicar no 3.7.2.Final TODAY! )

descompacte o zip vá na basta bin via cmd:

cd Documents\Alura\WorkspaceJavaEE\forge\bin\

e execute o forge:

start forge

dentro do Jboss volte para a sua workspace e crie o projeto

project-new --named projeto-teste

e depois no eclipse importe como Existing Maven Projects

Ola, não funcionou, algo a mais ? Segue o projeto no git também: https://github.com/wellingtonngallo/casaadocodigo

Qual foi o erro?

É o mesmo que passei antes, o erro 404, criei com jboss conforme passado mas nao resolveu

Mais alguma sugestão para correção? Encontrou algo no projeto do git?

Maria,

baixei o seu código no GitHub porém ainda não encontrei o problema(deu o mesmo erro na minha máquina), estou verificando ainda o problema, mas se quiser vou deixar o link do meu projeto para você testar ai na sua máquina.

https://github.com/ThiagoSussumuSato/alura-spring-mvc

Thiago, se conseguir identificar ficarei grato, pesquisei algumas coisas aqui, mas não encontrei nada ainda.

O seu projeto deu o mesmo erro, ele estava dando problemas em dependencias eu apaguei o arquivo e colei de novo, ai deu o mesmo problema que aconteceu no meu, será que é as dependecias?

Maria,

o seu projeto funcionou normal aqui sem nenhuma alteração, o erro de 404 que estava dando aqui é que o nome do projeto está como casaadocodigo (tem um "a" a mais no casa ) ficando com a url http://localhost:8080/casaadocodigo/ , e na hora de testar eu estava fazendo com casadocodigo ficando com a url http://localhost:8080/casadocodigo/ , como o projeto está com com um "a" a mais ele dava 404 pq eu estava colocando com um "a" a menos rsrsrsrsrs.

olha no console, se tiver a mensagem abaixo está tudo ok com o Spring

INFORMAÇÕES: Initializing Spring FrameworkServlet 'dispatcher'

só verifica se está batendo o nome do projeto com a montagem da url, pois o projeto que vc postou no Github está certinho, só o nome que está com um "a" a mais em "casa", por isso pode confundir na hora da acessar o browser.

estou usando JDK 1.8, Tomcat 9 e eclipse oxygen.

att.

Aqui nao aparece essa mensagem e tem isso no console:

ADVERTÊNCIA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:casaadocodigo' did not find a matching property.
set 05, 2017 5:30:19 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
ADVERTÊNCIA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:alura-spring-mvc' did not find a matching property.

Você está rodando dois projetos no tomcat? roda uma só e posta o log do console inteiro.

Ola, bom dia, testei em outra maquina e funcionou, acho que essa maquina da empresa pode ta bloqueando algo que não inicialize o Spring, alguma dica?

Bom dia Maria, você subiu exatamente o mesmo código?

Exatamente o mesmo código na faculdade, executou certinho, aqui no trabalho não inicia o Spring, acredito que deve ser algum bloqueio, mas qual pode ser não tenho ideia.

Alguma ideia?

Maria,

verifica a versão do JDK da máquina e verifica se seu usuário tem permissão admin, fora isso sem ideias.

att.

solução!

Boa tarde Maria, só verifica no add and remove do tomcat se você adicionou seu projeto

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