2014-04-23 10 views
5

Sto giocando con Spring Framework in IntelliJ IDEA 13.1.1.IntelliJ IDEA 13.1.1 - Spring MVC modello di progetto Errore

In IntelliJ scelgo: File -> Nuovo progetto -> Spring -> Spring MVC -> Crea progetto da modello. Crea un progetto Spring predefinito con la configurazione di WAR WAR: esploso su Tomcat Server. Non cambio nulla alla configurazione di default. Si costruisce e distribuisce in modo corretto, ma il risultato è il seguente:

stato HTTP 500 - Servlet.init() per servlet MVC-dispatcher ha gettato un'eccezione

javax.servlet.ServletException: Servlet.init() for servlet mvc-dispatcher threw exception 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
java.lang.Thread.run(Thread.java:744) 

file generati da IntelliJ sono abbastanza conciso:

MVC-dispatcher-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

<context:component-scan base-package="com.springapp.mvc"/> 

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/pages/"/> 
    <property name="suffix" value=".jsp"/> 
</bean> 

</beans> 

web.xml

<web-app version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

<display-name>Spring MVC Application</display-name> 

<servlet> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

HelloController.java

package com.springapp.mvc; 

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

@Controller 
@RequestMapping("/") 
public class HelloController { 
    @RequestMapping(method = RequestMethod.GET) 
    public String printWelcome(ModelMap model) { 
     model.addAttribute("message", "Hello world!"); 
     return "hello"; 
    } 
}  

Ciò si verifica su due macchine diverse, sotto Ubuntu 12.04 e Windows 7. ho scaricato qualche altro Spring MVC progetti da Internet e funzionano bene, quindi credo che il problema sia con i file che IntelliJ genera automaticamente, che trovo strano. Tuttavia, non sono stato in grado di trovare quale parte causa questo problema.

EDIT: traccia completa dello stack da Tomcat (7.0.52) log:

kwi 23, 2014 11:48:42 PM org.apache.catalina.core.ApplicationContext log 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:744) 

kwi 23, 2014 11:48:43 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Allocate exception for servlet mvc-dispatcher 
java.lang.IllegalArgumentException 
at org.springframework.asm.ClassReader.<init>(Unknown Source) 
at org.springframework.asm.ClassReader.<init>(Unknown Source) 
at org.springframework.asm.ClassReader.<init>(Unknown Source) 
at org.springframework.core.type.classreading.SimpleMetadataReader.<init> (SimpleMetadataReader.java:52) 
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80) 
at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101) 
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76) 
at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:298) 
at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300) 
at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300) 
at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:230) 
at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:153) 
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:130) 
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:285) 
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:223) 
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:630) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461) 
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:647) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:598) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:661) 
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:517) 
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:458) 
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138) 
at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1279) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1192) 
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:864) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:134) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:744) 

kwi 23, 2014 11:48:43 PM org.apache.catalina.core.ApplicationContext log 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:744) 
+0

non v'è alcuna etichetta fagioli di chiusura in MVC-dispatcher-servlet.xml –

+0

ci dovrebbe essere un problema con il modo in cui si distribuisce esso. Ho seguito tutti i tuoi passi e spiegato su un Tomcat 7 vanigliato e funziona perfettamente. – dimitrisli

+0

@Evgeni È presente nel codice, ma era invisibile nel mio post, l'ho corretto. – nachteil

risposta

1

stavo affrontando lo stesso problema e cambiando l'SDK JAVA (File >> Progetto Struttura >> Progetti) da 1.8 a 1.6 o 1.7 ha aiutato a rimuovere il problema.

0

Prima di tutto bisogna aggiungere la classe ascoltatore in web.xml, è il ContextLoaderListener

dopo vostro </servlet-mapping> aggiuntivo:

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

Se vengono segnalati errori circa la posizione MVC-dispatcher-servlet.xml aggiungi questo alla parte superiore del <servlet>:

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value> 
</context-param> 

Documenti:

ContextLoaderListener

Problemi correlati