2015-01-22 3 views
1

Spring Tool Suite를 사용하여 Spring Framework 및 Maven Tool을 사용하여 Java에서 MVC 웹 응용 프로그램을 개발 중입니다.Spring Tool Suite에서 Spring MVC 응용 프로그램을 시작할 수 없습니다.

응용 프로그램을 실행할 때 다음 오류가 발생합니다.

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    id="WebApp_ID" version="2.5"> 

<welcome-file-list> 

<welcome-file>NewFile.html</welcome-file> 

</welcome-file-list> 
<display-name>MyMsit</display-name> 

<!-- 
    - Location of the XML file that defines the root application context. 
    - Applied by ContextLoaderListener. 
--> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:spring/application-config.xml</param-value> 
</context-param> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 


<!-- 
    - Servlet that dispatches request to registered handlers (Controller implementations). 
--> 
<servlet> 
    <servlet-name>dispatcherServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>dispatcherServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

내가 오류를 이해할 수를 다음과 같이 pom.xml 파일의

SEVERE: Servlet.service() for servlet jsp threw exception 
java.lang.LinkageError: loader constraint violation: when resolving method "org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(Ljavax/servlet/ServletConfig;)Lorg/apache/tomcat/InstanceManager;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/WEB_002dINF/view/NewFile_jsp, and the class loader (instance of java/net/URLClassLoader) for the method's defining class, org/apache/jasper/runtime/InstanceManagerFactory, have different Class objects for the type org/apache/tomcat/InstanceManager used in the signature 
at org.apache.jsp.WEB_002dINF.view.NewFile_jsp._jspInit(NewFile_jsp.java:32) 
at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:49) 
at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:180) 
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) 
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:405) 
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:349) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:721) 
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:466) 
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:391) 
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318) 
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168) 
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) 
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228) 
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) 
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:618) 
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:655) 
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) 
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566) 
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
at java.lang.Thread.run(Thread.java:745) 

`Jan 23, 2015 12:55:53 AM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with  path [/MyMsit] threw exception [java.lang.LinkageError: loader constraint violation: when resolving method "org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(Ljavax/s ervlet/ServletConfig;)Lorg/apache/tomcat/InstanceManager;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/WEB_002dINF/view/NewFile_jsp, and the class loader (instance of java/net/URLClassLoader) for the method's defining class, org/apache/jasper/runtime/InstanceManagerFactory, have different Class objects for the type org/apache/tomcat/InstanceManager used in the signature] with root cause 
java.lang.LinkageError: loader constraint violation: when resolving method  "org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(Ljavax/servlet/ServletConfig;)Lorg/apache/tomcat/InstanceManager;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/WEB_002dINF/view/NewFile_jsp, and the class loader (instance of java/net/URLClassLoader) for the method's defining class, org/apache/jasper/runtime/InstanceManagerFactory, have different Class objects for the type org/apache/tomcat/InstanceManager used in the signature 

내용

<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>net.mymsit</groupId> 
<artifactId>MyMsit</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>war</packaging> 
<name>MyMsit</name> 
<description>Complete Course portal for MSIT Course</description> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.2.1.RELEASE</version> 
    <relativePath /> <!-- lookup parent from repository --> 
</parent> 

<properties> 
    <!-- Generic properties --> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 

    <!-- Web --> 
    <jsp.version>2.3.1</jsp.version> 
    <servlet.version>2.5</servlet.version> 


    <!-- Spring --> 
    <spring-framework.version>4.1.1.RELEASE</spring-framework.version> 

    <!-- Hibernate/JPA --> 
    <hibernate.version>4.2.1.Final</hibernate.version> 

    <!-- Logging --> 

    <slf4j.version>1.7.10</slf4j.version> 

    <!-- Test --> 
    <junit.version>4.11</junit.version> 

</properties> 

<dependencies> 

    <!-- Spring MVC --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     </dependency> 

    <!-- Other Web dependencies --> 

    <!-- Hibernate --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     </dependency> 


    <!-- Test Artifacts --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>jstl</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 


    <!-- Boot Artifacts --> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
     </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-jdbc</artifactId> 
     </dependency> 

    <dependency> 
     <groupId>org.hornetq</groupId> 
     <artifactId>hornetq-core</artifactId> 
     <version>2.2.21.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

    <dependency> 
     <groupId>org.freemarker</groupId> 
     <artifactId>freemarker</artifactId> 
     </dependency> 

    <dependency> 
     <groupId>org.springframework.social</groupId> 
     <artifactId>spring-social-facebook</artifactId> 
     </dependency> 

    <dependency> 
     <groupId>org.linkedin</groupId> 
     <artifactId>org.linkedin.zookeeper-impl</artifactId> 
     <version>1.5.1</version> 
    </dependency> 


    <dependency> 
     <groupId>org.linkedin</groupId> 
     <artifactId>org.linkedin.util-groovy</artifactId> 
     <version>1.9.0</version> 
    </dependency> 

</dependencies> 

web.xml 파일의 내용입니다입니다 . 아무도 내가 문제를 해결하는 데 도움이 될 수 없습니다.

+0

당신의 의존성을 보면 나는 그들이 엉망이라고 말할 것입니다. 스프링 부트를 사용하고 싶습니까? 귀하의 프로젝트는 혼란 스럽습니다 ... STC에서 –

+0

은 명시 적으로 pom.xml에서 스프링 의존성을 언급해야합니까? – Lucky

+0

이것은 STS 또는 IDE와 관련이 없습니다. Maven을 사용하여 프로젝트에서 종속성을 관리하는 경우 프로젝트 구현에 사용하는 IDE와 상관없이 pom.xml 파일에서 Maven을 처리해야합니다. STS는 pom.xml 파일을 구문 분석하고 Maven을 사용하여 이러한 종속성을 해결합니다. 그리고 당신의 오류는 어딘가에 의존성 문제가있는 것처럼 보입니다. 깨끗하고 신선한 Spring Boot 응용 프로그램 (예 : https://spring.io/guide의 Spring Guides)을 사용하여 시작하는 것이 좋습니다. 원하는 경우 STS에서 직접 사용할 수도 있습니다. –

답변

1

나는 또한 동일한 문제에 직면했다. 그러나 나는 해결책을 얻었다.
Tomcat 서버를 사용하는 경우 tomcat의 jar 파일을 WEB-INF/lib에 넣으면 안됩니다. Tomcat에는 이미 클래스가 있으며, 웹 애플리케이션 클래스 로더가 아닌 루트 tomcat 클래스 로더에 의해로드되어야합니다.
WEB-INF/lib 폴더를 확인하고 모든 tomcat의 jar를 삭제하십시오 (예 : tomcat-api-8.0.0-RC1.jar, tomcat-juli-8.0.0-RC1.jar, tomcat-util-8.0). .0-RC1.jar, tomcat-servlet-api-8.0.0-RC1.jar). 대신 web.xml 파일에 구성

0

는 Shrikant의 게시물을 참조에서 SpringBootServletInitializer를 구현하는 클래스,

+0

답변을 더 자세히 설명해야합니다. – Machavity

3

를 사용 - 종류의.

Tomcat을 사용할 때 Tomcat의 jar 파일을 WEB-INF/lib 폴더에 포함시키지 않으실 것입니다.

jar는 스프링 부트에 대한 Maven 종속성에서 비롯된 것입니다. 내가 확장 된 치어의 종속성 계층 구조 보았고 바람둥이 단지는 어디로부터 볼 때까지 스프링 부팅 항아리가 너무

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     <scope>provided</scope> 
    </dependency> 

처럼, 당신의 치어에 제공하도록 지정 이 나에게 악화의 비트를 일으켰습니다. 스프링 부트 의존성에서 컴파일 대신 제공된 범위를 변경하면 내 페이지가 잘로드됩니다.

Shrikant -> 당신의 대답에 대한 진실은 아무것도 아닙니다. lib 디렉토리에서 jar 파일을 지우고 전쟁을 만들 때 신경 쓰지 않아도됩니다. 한 번에 모든 것을 정리하고, 패키지하고, 설치하고 배포 할 수 있습니다. 하나의 버튼.

+0

이 문제가 해결되었습니다. Upvoted;) –

관련 문제