Struts2 访问不存在的Action报Unable to instantiate Action

linshutao 2012-11-09 03:02:20
请问为什么struts2在访问不存在的Action,如:http://localhost:8080/Testweb/abc,
Testweb是我的项目名,abc是随便乱写的,然后报:
Unable to instantiate Action, com.shutao.test.action.abcAction,  defined for 'abc' in namespace '/'com.shutao.test.action.abcAction
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:307)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:388)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:187)
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:47)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:478)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

root cause

java.lang.ClassNotFoundException: com.shutao.test.action.abcAction
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:146)
com.opensymphony.xwork2.ObjectFactory.getClassInstance(ObjectFactory.java:96)
com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:212)
com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:132)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:139)
com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:109)
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:288)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:388)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:187)
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:47)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:478)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)



请问为什么不是报404,是哪里出问题。
麻烦帮下新手,谢谢!
...全文
2377 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
applicationContext.xml 文件要与web.xml文件配置的位置对应,像下面的配置,applicationContext.xml 文件要放在WEB-INF下面 <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext*.xml</param-value> </context-param>
huimiezu 2012-11-09
  • 打赏
  • 举报
回复
改成<action name="*-*Action" class="com.shutao.test.action.{1}Action" method="{2}">试试
linshutao 2012-11-09
  • 打赏
  • 举报
回复
是通配符的关系吧,但不知道怎么改~~
linshutao 2012-11-09
  • 打赏
  • 举报
回复
引用 3 楼 huimiezu 的回复:
java.lang.ClassNotFoundException: com.shutao.test.action.abcAction 类没找到
为什么struts2一定要去找这个类?该action不存在为什么不报404?
huimiezu 2012-11-09
  • 打赏
  • 举报
回复
java.lang.ClassNotFoundException: com.shutao.test.action.abcAction 类没找到
linshutao 2012-11-09
  • 打赏
  • 举报
回复
引用 1 楼 liangtu33 的回复:
http://localhost:8080/Testweb/abc.action -- 这个应该报404
不是呀,也是包同样错误,我的strutx.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>
	<constant name="struts.enable.SlashesInActionNames " value="true" />
	<constant name="struts.i18n.encoding" value="UTF-8"/>
	<constant name="struts.devModel" value="true"/>
	<constant name="locale" value="zh_CN"/>
	<constant name="struts.objectFactory" value="spring"/>

<package name="TestSSH" namespace="/" extends="struts-default">	

	<default-action-ref name="notExist"></default-action-ref>	
	
	<action name="notExist">  
           <result>/index.jsp</result>  
       </action> 
       
	<action name="*-*" class="com.shutao.test.action.{1}Action" method="{2}">		
		<result name="success">
			/commonPages/success.jsp
		</result>
		<result name="execute">
			/commonPages/execute.jsp
		</result>
		<result name="error">
			/errorPages/error.jsp
		</result>	
	</action> 
	
	</package>				
</struts>
liangtu 2012-11-09
  • 打赏
  • 举报
回复
http://localhost:8080/Testweb/abc.action -- 这个应该报404

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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