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

HTTP Status 404 -

Bom dia, Estou passando por um problema aparentemente sem explicação, ja verifiquei mil vezes, e minhas classes de configuração estão corretas como podem var abaixo:

Configurações do AppWebConfiguration

package br.com.casadocodigodois.conf;

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

import br.com.casadocodigodois.controller.HomeCDCController;

@Configuration
@EnableWebMvc
@ComponentScan(basePackageClasses = { HomeCDCController.class })
public class AppWebConfiguration {

    @Bean
    public InternalResourceViewResolver internalResourceViewResolver() {

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

        return resolver;
    }
}

Configurações do Servlet do Spring

package br.com.casadocodigodois.conf;

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

public class ServletConf extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        // TODO Auto-generated method stub
        return null;
    }

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

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

}

Controller do primeiro exercicio

package br.com.casadocodigodois.controller;

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

@Controller
public class HomeCDCController {

    @RequestMapping("/")
    public void index() {
        System.out.println("acessado");

    }

}

pom.xlm

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.casadocodigodois</groupId>
    <artifactId>casadocodigodois</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <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>7.0.30</version>
            <scope>provided</scope>
        </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>


    <build>
        <finalName>casadocodigodois</finalName>
    </build>
    <properties>
        <failOnMissingWebXml>false</failOnMissingWebXml>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>

o log de inicialização do servidor

mar 08, 2017 1:26:20 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:casadocodigodois' did not find a matching property.
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Server version:        Apache Tomcat/7.0.75
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Server built:          Jan 18 2017 20:54:42 UTC
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Server number:         7.0.75.0
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: OS Name:               Windows 7
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: OS Version:            6.1
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Architecture:          amd64
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Java Home:             C:\Program Files\Java\jre1.8.0_121
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: JVM Version:           1.8.0_121-b13
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: JVM Vendor:            Oracle Corporation
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: CATALINA_BASE:         C:\Users\Gouveia\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: CATALINA_HOME:         C:\Users\Gouveia\Desktop\Resources\apache-tomcat-7.0.75
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Command line argument: -Dcatalina.base=C:\Users\Gouveia\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Command line argument: -Dcatalina.home=C:\Users\Gouveia\Desktop\Resources\apache-tomcat-7.0.75
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Command line argument: -Dwtp.deploy=C:\Users\Gouveia\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Command line argument: -Djava.endorsed.dirs=C:\Users\Gouveia\Desktop\Resources\apache-tomcat-7.0.75\endorsed
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Command line argument: -Dfile.encoding=Cp1252
mar 08, 2017 1:26:20 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFORMAÇÕES: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.8.0_121\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files\Java\jdk1.8.0_121\bin;.
mar 08, 2017 1:26:20 PM org.apache.coyote.AbstractProtocol init
INFORMAÇÕES: Initializing ProtocolHandler ["http-bio-8080"]
mar 08, 2017 1:26:20 PM org.apache.coyote.AbstractProtocol init
INFORMAÇÕES: Initializing ProtocolHandler ["ajp-bio-8009"]
mar 08, 2017 1:26:20 PM org.apache.catalina.startup.Catalina load
INFORMAÇÕES: Initialization processed in 503 ms
mar 08, 2017 1:26:20 PM org.apache.catalina.core.StandardService startInternal
INFORMAÇÕES: Starting service Catalina
mar 08, 2017 1:26:20 PM org.apache.catalina.core.StandardEngine startInternal
INFORMAÇÕES: Starting Servlet Engine: Apache Tomcat/7.0.75
mar 08, 2017 1:26:21 PM org.apache.catalina.startup.TldConfig execute
INFORMAÇÕES: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
mar 08, 2017 1:26:21 PM org.apache.catalina.core.ApplicationContext log
INFORMAÇÕES: No Spring WebApplicationInitializer types detected on classpath
mar 08, 2017 1:26:21 PM org.apache.coyote.AbstractProtocol start
INFORMAÇÕES: Starting ProtocolHandler ["http-bio-8080"]
mar 08, 2017 1:26:21 PM org.apache.coyote.AbstractProtocol start
INFORMAÇÕES: Starting ProtocolHandler ["ajp-bio-8009"]
mar 08, 2017 1:26:21 PM org.apache.catalina.startup.Catalina start
INFORMAÇÕES: Server startup in 1013 ms

Sim meu home.jsp esta configurado dentro da pasta /WEB-INF/views/ conforme foi informado no Resolver.

realmenten sei onde esta o erro!

Obs: O mais curioso é que eu fiz esse curso ate o exercicio 8, dai resolvi começar um do zero para testar meus conhecimentos e configurar o projeto passo a passo de acordo com minhas anotações sem olhar no alura. O projeto que eu fiz até o exercicio 8 esta funcionando normalmente. so que esse novo projeto eu nao confisigo passar nem da primeira parte !!! isso é muito estranho !!! ja verifiquei tmbm passo a passo olhando no outro projeto que esta funcionando e esta tudo igual.

17 respostas

da pra perceber que ele nem esta entrando no meu controller pq o sysout n aparece !!

Galera comparei o a log de inicialização do servidor do projeto que não funciona com o do projeto que funciona, acho que o problema esta na inicialização do Dispatcher do Spring. Segue o log.

mar 08, 2017 2:03:27 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:novacasadocodigo' did not find a matching property.
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Server version:        Apache Tomcat/7.0.75
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Server built:          Jan 18 2017 20:54:42 UTC
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Server number:         7.0.75.0
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: OS Name:               Windows 7
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: OS Version:            6.1
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Architecture:          amd64
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Java Home:             C:\Program Files\Java\jre1.8.0_121
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: JVM Version:           1.8.0_121-b13
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: JVM Vendor:            Oracle Corporation
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: CATALINA_BASE:         C:\Users\Gouveia\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: CATALINA_HOME:         C:\Users\Gouveia\Desktop\Resources\apache-tomcat-7.0.75
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Command line argument: -Dcatalina.base=C:\Users\Gouveia\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Command line argument: -Dcatalina.home=C:\Users\Gouveia\Desktop\Resources\apache-tomcat-7.0.75
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Command line argument: -Dwtp.deploy=C:\Users\Gouveia\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Command line argument: -Djava.endorsed.dirs=C:\Users\Gouveia\Desktop\Resources\apache-tomcat-7.0.75\endorsed
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAÇÕES: Command line argument: -Dfile.encoding=Cp1252
mar 08, 2017 2:03:27 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFORMAÇÕES: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.8.0_121\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files\Java\jdk1.8.0_121\bin;.
mar 08, 2017 2:03:27 PM org.apache.coyote.AbstractProtocol init
INFORMAÇÕES: Initializing ProtocolHandler ["http-bio-8080"]
mar 08, 2017 2:03:27 PM org.apache.coyote.AbstractProtocol init
INFORMAÇÕES: Initializing ProtocolHandler ["ajp-bio-8009"]
mar 08, 2017 2:03:27 PM org.apache.catalina.startup.Catalina load
INFORMAÇÕES: Initialization processed in 500 ms
mar 08, 2017 2:03:27 PM org.apache.catalina.core.StandardService startInternal
INFORMAÇÕES: Starting service Catalina
mar 08, 2017 2:03:27 PM org.apache.catalina.core.StandardEngine startInternal
INFORMAÇÕES: Starting Servlet Engine: Apache Tomcat/7.0.75
mar 08, 2017 2:03:28 PM org.apache.catalina.startup.TldConfig execute
INFORMAÇÕES: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
mar 08, 2017 2:03:28 PM org.apache.catalina.core.ApplicationContext log
INFORMAÇÕES: Spring WebApplicationInitializers detected on classpath: [br.com.novacasadocodigo.conf.ServletSpringMVC@57f3a0d]
log4j:WARN No appenders could be found for logger (br.com.novacasadocodigo.conf.ServletSpringMVC).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
mar 08, 2017 2:03:28 PM org.apache.catalina.core.ApplicationContext log
INFORMAÇÕES: Initializing Spring FrameworkServlet 'dispatcher'
mar 08, 2017 2:03:31 PM org.apache.coyote.AbstractProtocol start
INFORMAÇÕES: Starting ProtocolHandler ["http-bio-8080"]
mar 08, 2017 2:03:31 PM org.apache.coyote.AbstractProtocol start
INFORMAÇÕES: Starting ProtocolHandler ["ajp-bio-8009"]
mar 08, 2017 2:03:31 PM org.apache.catalina.startup.Catalina start
INFORMAÇÕES: Server startup in 3860 ms

No projeto que não funciona em momento nenhum o dispatcher é inicializado ! sera que é isso mesmo ?

Boa tarde, Julio! Tudo bem, cara? =)

Você chegou a incluir o projeto no servidor (Tomcat)? Talvez seja esse o problema, visto que ele não está reconhecendo seu projeto... =|

Fábio

Claro que eu inclui !

estou com a versão 7 do tomcat rodando. fui em add and remove e adicioo projeto, tem algum outro segredo na hora de adicionar um projeto ao servidor ?

Entende que eu tenho dois projeto configurado na minha maquina, um eu fui ate o exercicio 8 e dai resolvi começar um novo para testar meu conhecimento. esse novo projeto não inicializa corretamente no servidor, acredito que seja o dispatcher do spring que não esta sendo encontrado ... é muito entranho pq eu consegui fazer em um e no outro não :/

Julio,

Só para ter certeza... Como você está tentando acessar a página? Digo, qual URL você está digitando no browser?

Fábio

http://localhost:8080/novacasadocodigo/

ou http://localhost:8080/casadocodigodois/

essas são a urls dos meus dois projetos

Julio,

E somente a primeira está funcionando, correto?

Você poderia nos mostrar um print da sua estrutura de diretórios?

Fábio

é normal a pasta target> m2e-wtp estar vazia ?

Seu controller está faltando o retorno do tipo "String" apontando para a view "home":

Como está:

    @RequestMapping("/")
    public void index() {
        System.out.println("acessado");

    }

Como deve ser:

    @RequestMapping("/")
    public String index() {
        System.out.println("acessado");
        return "home";
    }

A informação de Carlos é relevante... Só que tem uma mensagem no seu log que me chamou a atenção:

INFORMAÇÕES: No Spring WebApplicationInitializer types detected on classpath

Será que existe a chance de vc ter desmarcado sem querer a opção de build automático do eclipse? Talvez essa classe e as outras não estejam sendo exportadas para o tomcat.

As informações do carlos são relevantes sim, mas eu ja havia testado isso tmbm . :(

O erro esta sim no build do projeto, mas é alguma coisa entre o maven e o forge que estão buildando errado o projeto.

Olhei no stackoverflow e vi que essa pasta do m2e-wtp não deveria estar vazia. fiz alguma "gambiarras" e consegui contornar o problema. consegui inicializar o dispatcher do Spring e minha aplicação esta passando pelo controller corretamente.

Alberto pode por favor me mandar um print com as configurações de build automáticos que vc citou, ou qual caminho que eu posso redefinir para default ...

vou continuar fuçando aqui e corrigir esse problemão !

É no eclipse mesmo.. lá no menu project, tem a opção build automatically.

solução!

Olha resolvi do jeito mais "porco" possivel, mas ta funcionando redondinho.

baixei a ultima versão do forje -> dei um .old no meu workspace -> inicializei o eclipse que criou um novo workspace -> criei um projeto no forge -> importei o projeto.

feito isso implementei todas as configurações necessárias pro Spring rodar (que são vistas na aula 1 do curso) e funcionou sem nenhum erro.