报错显示没有这个方法:SpringObjectFactory.<init>
先贴上导入的包:所有包都已经放到WEB-INF下的lib目录中了文件结构:
而且这些包。在之前的项目中都能正常使用。所以我就把它单独备份出来了以后方便找。
结果新建这个项目的时候导入这些包就使用不了了
而同样的配置文件,我把之前正常运行的项目清空了,把这些文件拉过去又能正常使用。
请问到底是哪里出了问题呢。顺便附上TOMCAT的配置信息:

解决方案 »

  1.   

    再贴上XMLWEB.XML<?xml version="1.0" encoding="UTF-8"?>
    <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">    <!--Hibernate Configuration-->
        <filter>
            <filter-name>OpenSessionInViewFilter</filter-name>
            <filter-class>
                org.springframework.orm.hibernate4.support.OpenSessionInViewFilter
            </filter-class>
            <init-param>
                <param-name>sessionFactoryBeanName</param-name>
                <param-value>sessionFactory</param-value>
            </init-param>
            <init-param>
                <param-name>singleSession</param-name>
                <param-value>true</param-value>
            </init-param>
            <init-param>
                <param-name>flushMode</param-name>
                <param-value>AUTO</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>OpenSessionInViewFilter</filter-name>
            <url-pattern>*.do</url-pattern>
        </filter-mapping>    <!--Struts2 Configuration-->
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>    <!--Spring Configuration-->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:/spring-config.xml</param-value>
        </context-param>
        <listener>
            <listener-class>
                org.springframework.web.context.ContextLoaderListener
            </listener-class>
        </listener></web-app>
    STRUTS配置文件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
            "http://struts.apache.org/dtds/struts-2.5.dtd">
    <struts>
        <constant name="struts.devMode" value="true"/>
        <constant name="struts.enable.DynamicMethodInvocation" value="true"/>    <!--struts2 default config-->
        <constant name="struts.ui.theme" value="simple"/>
        <constant name="struts.multipart.maxSize" value="20971520"/>    <!--  Make the Spring object factory the automatic default -->
        <constant name="struts.objectFactory" value="spring"/>    <package name="spring-default" namespace="/">
            <interceptors>
                <interceptor name="autowiring"
                             class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/>
            </interceptors>
        </package>    <package name="struts" namespace="/" extends="struts-default">
            <action name="userControlAction_*" class="userControlAction" method="{1}">
                <result name="login">/index.jsp</result>
                <allowed-methods>login</allowed-methods>
            </action>
        </package>
        <!--end of struts action-->
    </struts>
    spring配置文件:<?xml version="1.0" encoding="UTF-8"?>
    <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"
           xmlns:tx="http://www.springframework.org/schema/tx"
           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 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
        <!-- spring注解自动注入 -->
        <context:component-scan base-package="gothere.*"/>    <!-- 加载数据库属性配置文件 -->
        <context:property-placeholder location="classpath:/db.properties"/>    <!-- data connection setting -->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
            <property name="driverClass" value="${db.driverClassName}"/>
            <property name="jdbcUrl" value="${db.url}"/>
            <property name="user" value="${db.username}"/>
            <property name="password" value="${db.password}"/>
            <property name="initialPoolSize" value="2"/>
            <property name="minPoolSize" value="1"/>
            <property name="maxPoolSize" value="50"/>
            <property name="acquireRetryAttempts" value="0"/>
            <property name="acquireRetryDelay" value="1000"/>
            <property name="maxIdleTime" value="60"/>
            <property name="idleConnectionTestPeriod" value="50"/>
            <property name="testConnectionOnCheckout" value="true"/>
            <property name="autoCommitOnClose" value="true"/>
        </bean>    <!-- session工厂 -->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
            <property name="configLocation" value="classpath:/hibernate.cfg.xml"/>
            <property name="dataSource" ref="dataSource"/>
        </bean>
        <bean id="ht" class="org.springframework.orm.hibernate4.HibernateTemplate">
            <property name="sessionFactory" ref="sessionFactory"/>
        </bean>    <!--配置DAO-->
        <bean id="adminbaseDao" class="gothere.dao.impl.AdminbaseDaoImpl">
            <property name="hibernateTemplate" ref="ht"/>
        </bean>
        <bean id="airticketDao" class="gothere.dao.impl.AirTicketDaoImpl">
            <property name="hibernateTemplate" ref="ht"/>
        </bean>
        <bean id="bookticketDao" class="gothere.dao.impl.BookTicketDaoImpl">
            <property name="hibernateTemplate" ref="ht"/>
        </bean>
        <bean id="contactsDao" class="gothere.dao.impl.ContactsDaoImpl">
            <property name="hibernateTemplate" ref="ht"/>
        </bean>
        <bean id="userbaseDao" class="gothere.dao.impl.UserbaseDaoImpl">
            <property name="hibernateTemplate" ref="ht"/>
        </bean>
        <bean id="userinfoDao" class="gothere.dao.impl.UserinfoDaoImpl">
            <property name="hibernateTemplate" ref="ht"/>
        </bean>
        <bean id="walletDao" class="gothere.dao.impl.WalletDaoImp">
            <property name="hibernateTemplate" ref="ht"/>
        </bean>
        <!--结束配置DAO-->    <!--配置service-->
        <bean id="adminControlService" class="gothere.service.impl.AdminControlServiceImpl">
            <property name="adminbaseDAO" ref="adminbaseDao"/>
        </bean>
        <bean id="userControlService" class="gothere.service.impl.UserControlServiceImpl">
            <property name="userbaseDAO" ref="userbaseDao"/>
            <property name="userinfoDAO" ref="userinfoDao"/>
        </bean>
        <bean id="searchControlService" class="gothere.service.impl.SearchServiceImpl">
            <property name="airTicketDAO" ref="airticketDao"/>
        </bean>
        <!--结束配置service-->    <!--配置Action-->
        <bean id="userControlAction" class="gothere.action.UserControlAction">
            <property name="userControlService" ref="userControlService"/>
        </bean>
        <!--结束配置Action-->    <!-- 配置Spring事务管理器 -->
        <tx:annotation-driven/>
        <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"/>
        </bean>
        <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"/>
        </bean>
        <tx:annotation-driven transaction-manager="txManager"/>
        <tx:advice id="txAdvice" transaction-manager="txManager">
            <tx:attributes>
                <tx:method name="*" read-only="false" propagation="REQUIRED"/>
            </tx:attributes>
        </tx:advice>
    </beans>
      

  2.   

    启动的时候总是报:
    因为字数限制分两楼来发。这是第一17-Dec-2017 16:25:23.771 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.filterStart Exception starting filter [struts2]
     java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException - Class: com.opensymphony.xwork2.inject.ContainerBuilder$4
    File: ContainerBuilder.java
    Method: create
    Line: 144 - com/opensymphony/xwork2/inject/ContainerBuilder.java:144:-1
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:509)
    at org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:73)
    at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:61)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:283)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:264)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4491)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5131)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:740)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:716)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703)
    at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1729)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:456)
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:405)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1466)
    at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
    at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1307)
    at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1399)
    at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:828)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)
    at sun.rmi.transport.Transport$1.run(Transport.java:200)
    at sun.rmi.transport.Transport$1.run(Transport.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$240(TCPTransport.java:683)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$16/463593783.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
    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:745)
    Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:144)
    at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:52)
    at com.opensymphony.xwork2.inject.ContainerBuilder$3.create(ContainerBuilder.java:106)
    at com.opensymphony.xwork2.inject.ContainerBuilder$8.call(ContainerBuilder.java:593)
    at com.opensymphony.xwork2.inject.ContainerBuilder$8.call(ContainerBuilder.java:590)
    at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:560)
    at com.opensymphony.xwork2.inject.ContainerBuilder.create(ContainerBuilder.java:590)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:182)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
    at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:957)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:463)
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:496)
    ... 51 more
    Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:479)
    at com.opensymphony.xwork2.inject.ContainerImpl$7.call(ContainerImpl.java:516)
    at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:569)
    at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:514)
    at com.opensymphony.xwork2.config.impl.LocatableFactory.create(LocatableFactory.java:50)
    at com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:142)
    ... 62 more
    Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:289)
    at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:422)
    at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:477)
    ... 67 more
      

  3.   

    这是报错信息的第二
    Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:144)
    at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:52)
    at com.opensymphony.xwork2.inject.ContainerImpl$ParameterInjector.inject(ContainerImpl.java:448)
    at com.opensymphony.xwork2.inject.ContainerImpl.getParameters(ContainerImpl.java:462)
    at com.opensymphony.xwork2.inject.ContainerImpl.access$000(ContainerImpl.java:38)
    at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:287)
    ... 69 more
    Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:479)
    at com.opensymphony.xwork2.inject.ContainerImpl$7.call(ContainerImpl.java:516)
    at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:569)
    at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:514)
    at com.opensymphony.xwork2.config.impl.LocatableFactory.create(LocatableFactory.java:50)
    at com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:142)
    ... 74 more
    Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:289)
    at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:422)
    at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:477)
    ... 79 more
    Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:144)
    at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:52)
    at com.opensymphony.xwork2.inject.ContainerImpl$ParameterInjector.inject(ContainerImpl.java:448)
    at com.opensymphony.xwork2.inject.ContainerImpl.getParameters(ContainerImpl.java:462)
    at com.opensymphony.xwork2.inject.ContainerImpl.access$000(ContainerImpl.java:38)
    at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:287)
    ... 81 more
    Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:479)
    at com.opensymphony.xwork2.inject.ContainerImpl$7.call(ContainerImpl.java:516)
    at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:569)
    at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:514)
    at com.opensymphony.xwork2.config.impl.LocatableFactory.create(LocatableFactory.java:50)
    at com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:142)
    ... 86 more
    Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:427)
    at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:477)
    ... 91 more
    Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
    at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:410)
    ... 92 more
    Caused by: java.lang.NoSuchMethodError: com.opensymphony.xwork2.spring.SpringObjectFactory.<init>(Lcom/opensymphony/xwork2/inject/Container;)V
    at org.apache.struts2.spring.StrutsSpringObjectFactory.<init>(StrutsSpringObjectFactory.java:74)
    ... 97 more17-Dec-2017 16:25:23.780 信息 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.ApplicationContext.log Closing Spring root WebApplicationContext我百度上找了很久。搜到的都说是因为WEB.XML里面没有配置监听器。
    但是我明明已经写了这段的。<context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:/spring-config.xml</param-value>
        </context-param>
        <listener>
            <listener-class>
                org.springframework.web.context.ContextLoaderListener
            </listener-class>
        </listener>路径是肯定对的。ctrl+左键都能跳转过去
      

  4.   

    你把spring的监听器放在Struts2前面试一下,
      

  5.   


    还是不行。把SPRING放到STRUTS2前面也没用。放到所有监听器最前面也没用
      

  6.   

    我以为是放在Struts2拦截器后面,spring的没有执行,