2015-01-04 3 views
2

서버에서 Spring MVC 프로젝트를 실행하는 방법을 배우려하고 있는데 http 404 오류가 발생했습니다. Eclipse를 사용하고 있습니다. Luna 4.4.1, Java 7, Spring 4.1.4 및 Windows 7 시스템의 Pivotal tc 서버 3.0.2. 더 자세히 설명하기 전에 Tomcat 7을 사용하여 간단한 연습 프로젝트를 만들 때도 동일한 404 오류가 발생하므로 서버 구성 (Tomcat과 Tomcat 모두)에 문제가 있다고 생각합니다. 다음은 프로젝트 디렉토리, 실행 해 보았던 서버 및 오류 페이지를 보여주는 스크린 샷입니다. enter image description hereEclipse 프로젝트에서 HTTP 404 오류가 발생하는 경우

프로그램 코드는 정상적으로 보입니다. HomeControllerTest (기본적으로 Craig Walls의 Action에서 Spring의 새 4 판에서 얻은)를 실행하면 컴파일되고 전달됩니다. 이 문제를 해결하려면 어디에서 볼 필요가 있습니까? ` package com.kwalker.practicewellness;

여기
package com.kwalker.practicewellness.config; 

import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.ComponentScan.Filter; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.FilterType; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 

@Configuration 
@ComponentScan(basePackages={"practicewellness"}, 
      excludeFilters={@Filter(type=FilterType.ANNOTATION, value=EnableWebMvc.class)}) 
public class RootConfig { 

} 

는 W이다 : 여기

package com.kwalker.practicewellness.config; 

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

public class WellnessWebAppInitializer extends 
    AbstractAnnotationConfigDispatcherServletInitializer { 

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

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

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

} 

가 RootConfig이다

여기
package com.kwalker.practicewellness.web; 

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

@Controller 
public class HomeController { 

@RequestMapping(value="/", method=RequestMethod.GET) 
public String home() { 
    return "home"; 
} 
} 

가 WellnessWebAppInitializer이다 : 여기

import org.junit.Test; 
import org.springframework.test.web.servlet.MockMvc; 
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*; 
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; 
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; 

import com.kwalker.practicewellness.web.HomeController; 

public class HomeControllerTest { 

@Test 
public void testHomePage() throws Exception { 
    HomeController controller = new HomeController(); 
    MockMvc mockMvc = standaloneSetup(controller).build(); 

    mockMvc.perform(get("/")).andExpect(view().name("home")); 

} 

} 

`

은 HomeController 클래스이며 ebConfig : (하나 : 여기
[INFO] Scanning for projects... 
[INFO] 
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Practice Wellness 1.0.0-BUILD-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ practicewellness --- 
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! 
[INFO] Copying 1 resource 
[INFO] 
[INFO] --- maven-compiler-plugin:3.2:compile (default-compile) @ practicewellness --- 
[INFO] Nothing to compile - all classes are up to date 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 1.954 s 
[INFO] Finished at: 2015-01-04T10:37:59-07:00 
[INFO] Final Memory: 8M/115M 
[INFO] ------------------------------------------------------------------------ 

가 콘솔에 출력됩니다 : 여기
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ page session="false" %> 
<html> 
<head> 
<title>Welcome</title> 
<link rel="stylesheet" 
     type="text/css" 
     href="<c:url value="/resources/style.css"/>"> 
</head> 
<body> 
<h1> 
Welcome to Vital Potential! 
</h1> 

<P> The time on the server is ${serverTime}. </P> 
</body> 
</html> 

는 메이븐 빌드의 출력입니다 : 여기

package com.kwalker.practicewellness.config; 

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

@Configuration 
@EnableWebMvc 
@ComponentScan("practicewellness.web") 
public class WebConfig extends WebMvcConfigurerAdapter { 

@Bean 
public ViewResolver viewResolver() { 
    InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
    resolver.setPrefix("/WEB-INF/views/"); 
    resolver.setSuffix(".jsp"); 
    resolver.setExposeContextBeansAsAttributes(true); 
    return resolver; 
} 

@Override 
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
    configurer.enable(); 
} 

} 

는 home.jsp 페이지입니다 경고이며, 시청중인 교육 동영상과 동일한 경고입니다.

Jan 04, 2015 10:42:37 AM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Practice Wellness' did not find a matching property. 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server version:  Apache Tomcat/7.0.57 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server built:   Nov 3 2014 08:39:16 UTC 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server number:   7.0.57.0 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: OS Name:    Windows 7 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: OS Version:   6.1 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Architecture:   amd64 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: JAVA_HOME:    C:\Program Files\Java\jdk1.7.0_71\jre 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: JVM Version:   1.7.0_71-b14 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: JVM Vendor:   Oracle Corporation 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: CATALINA_BASE:   C:\Users\kyle\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: CATALINA_HOME:   C:\Apache-Tomcat\apache-tomcat-7.0.57 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: - Dcatalina.base=C:\Users\kyle\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dcatalina.home=C:\Apache-Tomcat\apache-tomcat-7.0.57 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: - Dwtp.deploy=C:\Users\kyle\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Djava.endorsed.dirs=C:\Apache-Tomcat\apache-tomcat-7.0.57\endorsed 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dfile.encoding=Cp1252 
Jan 04, 2015 10:42:37 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent 
INFO: 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\jdk1.7.0_71\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\ProgramData\Orac le\Java\javapath;C:\Program Files (x86)\HP SimplePass 2011\x64;C:\Program Files (x86)\HP SimplePass 2011\;;C:\Program Files\Broadcom\Broadcom 802.11\Driver;;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\12.0\DLLShared\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\WIDCOMM\Bluetooth Software\;C:\Program Files\WIDCOMM\Bluetooth Software\syswow64;C:\Program Files\Broadcom\WHL\;C:\Program Files\Broadcom\WHL\syswow64;C:\Program Files\Broadcom\WHL\SysWow64\;C:\Program Files\Broadcom\WHL\SysWow64\syswow64;C:\Program Files (x86)\Intel\Services\IPT\;C:\Program Files\Java\jdk1.8.0_25\bin;C:\Program Files\Gradle\Gradle- 2.0\gradle-2.2.1\bin;. 
Jan 04, 2015 10:42:37 AM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-8080"] 
Jan 04, 2015 10:42:37 AM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
Jan 04, 2015 10:42:37 AM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 911 ms 
Jan 04, 2015 10:42:38 AM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
Jan 04, 2015 10:42:38 AM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.57 
Jan 04, 2015 10:42:40 AM org.apache.catalina.core.ApplicationContext log 
INFO: Spring WebApplicationInitializers detected on classpath: [[email protected]da480b] 
Jan 04, 2015 10:42:40 AM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring root WebApplicationContext 
INFO : org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization started 
INFO : org.springframework.web.context.support.AnnotationConfigWebApplicationContext - Refreshing Root WebApplicationContext: startup date [Sun Jan 04 10:42:40 MST 2015]; root of context hierarchy 
INFO : org.springframework.web.context.support.AnnotationConfigWebApplicationContext - Registering annotated classes: [class com.kwalker.practicewellness.config.RootConfig] 
INFO : org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring 
INFO : org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 524 ms 
INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'dispatcher': initialization started 
Jan 04, 2015 10:42:41 AM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring FrameworkServlet 'dispatcher' 
INFO : org.springframework.web.context.support.AnnotationConfigWebApplicationContext - Refreshing WebApplicationContext for namespace 'dispatcher-servlet': startup date [Sun Jan 04 10:42:41 MST 2015]; parent: Root WebApplicationContext 
INFO : org.springframework.web.context.support.AnnotationConfigWebApplicationContext - Registering annotated classes: [class com.kwalker.practicewellness.config.WebConfig] 
INFO : org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring 
INFO : org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler] 
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter - Looking for @ControllerAdvice: WebApplicationContext for namespace 'dispatcher-servlet': startup date [Sun Jan 04 10:42:41 MST 2015]; parent: Root WebApplicationContext 
INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'dispatcher': initialization completed in 1029 ms 
Jan 04, 2015 10:42:42 AM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-bio-8080"] 
Jan 04, 2015 10:42:42 AM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-bio-8009"] 
Jan 04, 2015 10:42:42 AM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 4348 ms 
+0

위에 게시 된 코드에 따르면 단위 테스트 케이스를 작성하려고합니다. 실제 컨트롤러와 스프링 설정 파일을 게시하십시오. –

+0

또한 콘솔을 점검하면 시작할 때 오류가 발생하여 전체 웹 앱이로드되지 않을 수 있습니다. –

+0

콘솔에 문제가 있음을 알리는 내용이 표시되지 않습니다. 콘솔 출력 상단에있는 경고 하나는 내가보고있는 교육 비디오의 출력에도 있었으며, 예제를 실행할 때 제대로 작동했습니다. 내가 볼 수있는 다른 곳이 있습니까? –

답변

1

모든 설정에서 @ComponentScan을 잘못 사용하고있는 것처럼 보입니다. 기본 패키지 이름에 com.kwalker. 부분이 없습니다. 구성 요소 검사가 홈 컨트롤러를 선택하지 않는다고 생각됩니다.

configs의 기본 패키지를 전체 패키지 이름으로 업데이트 해보십시오.

또한 INFO 로깅 모드에서 서버를 시작하면 등록 된 모든 컨트롤러/경로에 대한 정보를 얻을 수 있습니다.이 정보를 통해 더 많은 정보를 얻을 수 있습니다.

+0

그건 정확히 그랬어! 정말 고맙습니다! 그런 식으로 썼을 때 수수께끼를 기억하지만 스프링 인 액션 책 (제 14 판, 138 페이지)의 예제는 그런 식으로 기본 패키지를 나열 했으므로 함께갔습니다. 이제 제대로 실행 중입니다. –

관련 문제