问题描述
异常信息:exceptionUnable to instantiate Action, loginAction, defined for 'loginAction' in namespace '/'loginActioncom.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:318)com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:198)org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:475)org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)root causejava.lang.ClassNotFoundException: loginActionorg.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:157)com.opensymphony.xwork2.ObjectFactory.getClassInstance(ObjectFactory.java:107)com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:223)com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:143)com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:150)com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:120)com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:299)com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:198)org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:475)org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)导入的jar文件:web.xml:<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value></context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <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> </web-app>applicationContext.xml:<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url" value="jdbc:mysql://localhost:3306/test"></property><property name="username" value="root"></property><property name="password" value=""></property><property name="maxActive" value="100"></property><property name="maxIdle" value="30"></property><property name="maxWait" value="500"></property><property name="defaultAutoCommit" value="true"></property></bean><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource"><ref bean="dataSource" /></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop></props></property><property name="mappingResources"><list><value>com/gufengxiachen/s2sh/bean/User.hbm.xml</value></list></property></bean><bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"><constructor-arg><ref local="sessionFactory"/></constructor-arg></bean><!-- 把DAO注入给Session工厂 --><bean id="userDao" class="com.gufengxiachen.s2sh.daoimpl.UserDAOImpl" ><property name="sessionFactory"><ref bean="sessionFactory"/></property></bean><!-- 把Service注入给DAO --><bean id="userService" class="com.gufengxiachen.s2sh.serviceimpl.UserServiceImpl"><property name="userDao" ref="userDao"></property></bean><!-- 把Action注入给Service --><bean id="loginAction" class="com.gufengxiachen.s2sh.action.LoginAction"> <property name="userService" ref="userService"> </property></bean></beans>struts.xml:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="s2sh" extends="struts-default" namespace="/"> <action name="loginAction" class="loginAction"> <result name="success">/result.jsp</result> <result name="input">/index.jsp</result> </action> </package> </struts>hibernate映射文件:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mappingPUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.gufengxiachen.s2sh.bean" table="user"><id name="id" column="id" type="int"><generator class="increment"></generator></id><property name="username" column="username" type="string"></property><property name="password" type="string"></property></class></hibernate-mapping> 问题补充:duronshi 写道
解决方案
如果担心jar包有冲突的话~最好先启动一下服务器~看看出来什么信息~然后就百度一下就会之后那些包放在一起就会冲突的了~
解决方案二:
试试这样子:struts.xml变成这样<package name="s2sh" extends="struts-default" namespace="/user"> <action name="login" class="loginAction">index.jsp变成这样: <s:form action="login" namespace="/user">从这个例子里好好学一下<action>和<s:form>的配对一个struts.xml里面可以有多个<package>标签,在<package>标签里面最好定义一下那个namespace属性(针对用户的我们可以定义为/user,针对商品的我们可以定义为/product)以上都是举例,这样对于url的划分比较好~其他文件我没有看了~最近我缺分啊~
解决方案三:
是的~没有找到action或者你页面的namespace属性值和struts.xml那个action的namespace没有配对上~如果可以的话把你页面的那个<s:form>那一小行贴出来~
解决方案四:
message There is no Action mapped for namespace / and action name login. 是不是报404错误?
解决方案五:
Exception提示的是:loginAction没有实例化,也没有找到相应的“loginAction”类试试一楼的办法
解决方案六:
你要一个一个去测试看是否能拿到Dao,service有可能是你的依赖注入出了问题。
解决方案七:
虽然记得默认就有,但还是在<package/>前显示加上<constant name="struts.objectFactory" value="spring" />试试。
解决方案八:
楼主要学会分析问题,呵呵Unable to instantiate Action, loginAction, defined for 'loginAction' in namespace '/'loginAction java.lang.ClassNotFoundException: loginAction 通过这两行应该可以看出是什么问题了,<package name="s2sh" extends="struts-default" namespace="/"> <action name="loginAction" class="loginAction">
解决方案九:
Unable to instantiate Action, loginAction, defined for 'loginAction' in namespace '/'loginAction 把<action name="loginAction" class="loginAction"> 改成<action name="login" class="loginAction"> 试下