jdk1.6+javaee5+Tomcat6+Hibernate3.6.6+Spring3.0.5+Struts2.2.3struts.xml: <constant name="struts.devMode" value="true" />
<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
<constant name="struts.objectFactory.spring.autoWire" value="type" />
<constant name="struts.class.reloading.watchList" value="com\.zhaobao\.gwap\..*" />
<constant name="struts.class.reloading.acceptClasses" value="com\.zhaobao\.gwap\.action\..*" />
<constant name="struts.class.reloading.reloadConfig" value="true" />
web.xml: <filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <!-- Context Configuration locations for Spring XML files -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml,classpath:beans.xml</param-value>
</context-param>

   <context-param>
       <param-name>contextClass</param-name>
       <param-value>org.apache.struts2.spring.ClassReloadingXMLWebApplicationContext</param-value>
   </context-param> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>当tomcat重启时报的错:Caused by: java.lang.NoSuchMethodError: org.apache.struts2.spring.ClassReloadingBeanFactory.resolveBeanClass(Lorg/springframework/beans/factory/support/RootBeanDefinition;Ljava/lang/String;)Ljava/lang/Class;
at org.apache.struts2.spring.ClassReloadingBeanFactory.createBeanInstance(ClassReloadingBeanFactory.java:40)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:398)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:594)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:407)
at org.apache.struts2.spring.ClassReloadingXMLWebApplicationContext.refresh(ClassReloadingXMLWebApplicationContext.java:168)
at org.apache.struts2.spring.StrutsSpringObjectFactory.<init>(StrutsSpringObjectFactory.java:117)
... 45 more

解决方案 »

  1.   


    你是说有多个同类的包,版本不一样吗?没有啊
    并且是ClassReloadingBeanFactory.createBeanInstance()调用.ClassReloadingBeanFactory.resolveBeanClass()的时候说没有resolveBeanClass()这个方法
    看源码好像是resolveBeanClass这个方法的调用和声明是不一样的,调用的时候用的两个参数,声明的时候用的是三个参数。
      

  2.   

    This feature is experimental, and should never be used in production systems. 这个功能是实验性的,不要用到生产系统中去。(struts2 Guide)