spring controller启动报错

yangnianbing110 2012-05-09 11:42:32

@Controller
public class HomeController
{
public static final int DEFAULT_SPITTLES_PER_PAGE = 25;

@RequestMapping({"/", "/home"})
public String showHomePage(Map<String, Object> model)
{
return "home";
}
}

只有这一个controller,tomcat启动的时候报错,上网找了一下,有人说是因为没有默认的构造函数的原因,但是加一个不带参数的构造函数也是这个样子,求高手帮帮忙,解决一下,先谢了

严重: StandardWrapper.Throwable
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'homeController' defined in file [D:\apache-tomcat-6.0.26\apache-tomcat-6.0.26\webapps\spitter\WEB-INF\classes\com\habuma\spitter\mvc\HomeController.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.habuma.spitter.mvc.HomeController]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.habuma.spitter.mvc.HomeController.<init>()
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:946)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:890)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:557)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:842)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:416)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:443)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:459)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:340)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:307)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.habuma.spitter.mvc.HomeController]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.habuma.spitter.mvc.HomeController.<init>()
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:69)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:938)
... 28 more
Caused by: java.lang.NoSuchMethodException: com.habuma.spitter.mvc.HomeController.<init>()
at java.lang.Class.getConstructor0(Class.java:2706)
at java.lang.Class.getDeclaredConstructor(Class.java:1985)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:64)
... 29 more
2012-5-9 23:41:50 org.apache.catalina.core.StandardWrapperValve invoke
严重: Allocate exception for servlet spitter
java.lang.NoSuchMethodException: com.habuma.spitter.mvc.HomeController.<init>()
at java.lang.Class.getConstructor0(Class.java:2706)
at java.lang.Class.getDeclaredConstructor(Class.java:1985)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:64)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:938)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:890)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:557)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:842)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:416)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:443)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:459)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:340)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:307)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
...全文
207 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
热烈的红颜 2012-05-10
  • 打赏
  • 举报
回复
你把你的SPRING MVC的配置文件 给贴出来看看呢?
昨日凡阳 2012-05-10
  • 打赏
  • 举报
回复
你配置的不对,不然也不会初始化bean的时候报错。
dracularking 2012-05-10
  • 打赏
  • 举报
回复
有一个可能是搜索组件的范围即base-package设置有问题

http://www.mkyong.com/spring/spring-auto-scanning-components/

但也有矛盾的地方,如果是类HomeController找不到,应该就不能调用该类Class对象的getDeclaredConstructor方法了,照这情形,貌似是HomeController的Class对象已经生成才对,否则就应该先报ClassNotFoundException,而不是NoSuchMethodException了

Caused by: java.lang.NoSuchMethodException: com.habuma.spitter.mvc.HomeController.<init>()
at java.lang.Class.getConstructor0(Class.java:2706)
at java.lang.Class.getDeclaredConstructor(Class.java:1985)

看看bean是怎么定义的呢
http://stackoverflow.com/questions/7492652/does-spring-require-all-beans-to-have-a-default-constructor
dracularking 2012-05-10
  • 打赏
  • 举报
回复
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'homeController' defined in file [D:\apache-tomcat-6.0.26\apache-tomcat-6.0.26\webapps\spitter\WEB-INF\classes\com\habuma\spitter\mvc\HomeController.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.habuma.spitter.mvc.HomeController]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.habuma.spitter.mvc.HomeController.<init>()

你看看tomcat路径下
D:\apache-tomcat-6.0.26\apache-tomcat-6.0.26\webapps\spitter\WEB-INF\classes\com\habuma\spitter\mvc\HomeController.class
这个HomeController.class文件生成了没有,如果文件生成了,且又有默认的构造函数的话,那就是spring定位机制上的问题了
KingViker 2012-05-10
  • 打赏
  • 举报
回复
哥们,你怎么不继承一下?我的项目里有继承:public class SimpleBaseController implements ApplicationContextAware
NoTargetException 2012-05-10
  • 打赏
  • 举报
回复
spring找不到对应的方法。
注解,我记得还要将你这个组件变成spring对应的组件才能找到。
在这个类上加上@component。注解它为组件吧
yangnianbing110 2012-05-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

你把你的SPRING MVC的配置文件 给贴出来看看呢?
[/Quote]
就是看书,写个例子熟悉熟悉,
配置文件很简单,就这两个配置
<context:component-scan base-package="com.habuma.spitter.*"/>
<mvc:annotation-driven/>
yangnianbing110 2012-05-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

spring找不到对应的方法。
注解,我记得还要将你这个组件变成spring对应的组件才能找到。
在这个类上加上@component。注解它为组件吧
[/Quote]
@controller也有这个作用
yangnianbing110 2012-05-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'homeController' defined in file [D:\apache-tomcat-6.0.26\apache-tomcat-6.0.26\webapps\spitter\WEB-INF\classes\c……
[/Quote]
该目录下面有HomeController.class这个文件,请问一下spring的定位机制的问题是什么意思呢?为什么会找不到class文件

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧