报错显示没有这个方法:SpringObjectFactory.<init>
先贴上导入的包:所有包都已经放到WEB-INF下的lib目录中了文件结构:
而且这些包。在之前的项目中都能正常使用。所以我就把它单独备份出来了以后方便找。
结果新建这个项目的时候导入这些包就使用不了了
而同样的配置文件,我把之前正常运行的项目清空了,把这些文件拉过去又能正常使用。
请问到底是哪里出了问题呢。顺便附上TOMCAT的配置信息:
先贴上导入的包:所有包都已经放到WEB-INF下的lib目录中了文件结构:
而且这些包。在之前的项目中都能正常使用。所以我就把它单独备份出来了以后方便找。
结果新建这个项目的时候导入这些包就使用不了了
而同样的配置文件,我把之前正常运行的项目清空了,把这些文件拉过去又能正常使用。
请问到底是哪里出了问题呢。顺便附上TOMCAT的配置信息:
<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>
因为字数限制分两楼来发。这是第一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
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+左键都能跳转过去
还是不行。把SPRING放到STRUTS2前面也没用。放到所有监听器最前面也没用