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