2016-01-11 156 views
0

我有一个小项目Spring + Hibernate的MVC + IDE STS 当我创建的项目默认情况下它创建的web.xmlHTTP状态500 - 为servlet调度Servlet.init()抛出的异常的web.xml

<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd" > 
<web-app> 
<display-name>Archetype Created Web Application</display-name> 
</web-app> 

当我升级web.xml到版本3.1

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
     http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1"> 

    <display-name>Archetype Created Web Application</display-name> 
    <servlet> 
     <servlet-name>dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
</web-app> 

我的项目停止工作,并删除Maven的依赖关系。当我手动添加Maven依赖和运行的项目是显示错误

HTTP状态500 - Servlet.init()为servlet调度抛出异常

这是我的pom.xml

<properties> 
    <hibernate.version>4.3.11.Final</hibernate.version> 
    <spring.version>4.2.3.RELEASE</spring.version> 
    <mysql.version>5.1.38</mysql.version> 
</properties> 

这是完整的堆栈跟踪。我如何将我的项目或web.xml升级到3.0或3.1?

HTTP Status 500 - Servlet.init() for servlet dispatcher threw exception 

type Exception report 

message Servlet.init() for servlet dispatcher threw exception 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: Servlet.init() for servlet dispatcher threw exception 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) 
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 
root cause 

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'filialController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private az.nikoil.operlist.service.FilialService az.nikoil.operlist.controller.FilialController.filialService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'filialServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private az.nikoil.operlist.dao.FilialDAO az.nikoil.operlist.service.impl.FilialServiceImpl.filialDAO; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'filialDAOImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory az.nikoil.operlist.create.session.AbstractSessionFactory.sessionFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactoryBean' defined in ServletContext resource [/WEB-INF/spring-hibernate.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: az.nikoil.operlist.model.Oper.filials in az.nikoil.operlist.model.Filial.opers 
    org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) 
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214) 
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) 
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
    org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) 
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:838) 
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537) 
    org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:667) 
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:633) 
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:681) 
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:552) 
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:493) 
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) 
    javax.servlet.GenericServlet.init(GenericServlet.java:158) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) 
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 
+3

后全堆栈跟踪。你最初的web项目是2.3,并没有在'web.xml'中包含任何内容,因此没有任何东西被启动/拾取。当你切换到3.0(而不是你指定的3.1)时,会自动拾取。 –

+0

我添加了全部堆栈跟踪的一部分,因为它更多是30000个simvols。 – Farik013

+0

请把你的完整的pom.xml。你是否也可以检查STS PROBLEM标签,并为项目显示错误。 – Avis

回答

-2

stacktrace说根本原因是:spring无法创建sessionFactory。因为在“az.nikoil.operlist.model.Filial.opers”一个未知的注释财产“az.nikoil.operlist.model.Oper.filials”

+1

是的,它显示了对于OP而言哪些是显而易见的。请确保这是一条评论或发布答案,方法是编辑并添加如何解决问题。 – Lucky

+0

@Lucky我可以看到它,你只是巧妙地做了评论。今天,我只是倾斜如何巧妙地复制和粘贴;) – Nikhil

+0

@Lucky:刚才知道用户低于50的声誉不能评论问题。请告诉我如何报告如果某些gp管理员劝阻新手不要在SO上回答:? – Nikhil

0

我觉得你的web.xml看起来应该有点不同:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"> 

</web-app> 

请确保您要取决于您的pom.xml中的非冲突版本。也就是说,例如:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.6</version> 
    <configuration> 
     ... 
    </configuration> 
</plugin> 

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>javax.servlet-api</artifactId> 
    <version>3.1.0</version> 
    <scope>provided</scope> 
</dependency> 

最后,你应该使用Java 7或8编译:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.3</version> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
    </configuration> 
</plugin> 
+0

它没有帮助 – Farik013

相关问题