尝试使用 ant 部署我的应用程序时出现错误。当我从 intellij 运行应用程序时,它会正确部署和运行。但是,当我使用 ant 构建和部署时,出现错误:
There is no Action mapped for namespace [/] and action name [CheckLogin] associated with context path [].
我已经包含了我的 ant build.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project name="cars" default="all">
<property file="build.properties"/>
<property name="dist.dir" location="${basedir}/dist"/>
<property name="tomcat.deploydir" location="/Users/bernardoneill/apache-tomcat-7.0.32/webapps"/>
<target name="init" description="Build initialization"/>
<target name="setup">
<mkdir dir="dist" />
<echo>Copying web into dist</echo>
<copydir dest="dist/web" src="web" />
<copydir dest="dist/web/WEB-INF/lib" src="${basedir}/web/WEB-INF" />
<copydir dest="dist/web/WEB-INF/lib" src="${basedir}/lib" />
</target>
<target name="compile">
<delete dir="${dist.dir}/web/WEB-INF/classes" />
<mkdir dir="${dist.dir}/web/WEB-INF/classes" />
<javac destdir="${dist.dir}/web/WEB-INF/classes" srcdir="${basedir}/src">
<classpath>
<fileset dir="${basedir}/web/WEB-INF">
<include name="*" />
</fileset>
</classpath>
<classpath>
<fileset dir="${basedir}/lib">
<include name="*" />
</fileset>
</classpath>
</javac>
<copy todir="${dist.dir}/web/WEB-INF">
<fileset dir="src">
<include name="**/*.properties" />
<include name="**/*.xml" />
</fileset>
</copy>
</target>
<target name="buildwar">
<war basedir="${basedir}/dist/web" destfile="ROOT.war"
webxml="${basedir}/dist/web/WEB-INF/web.xml">
<exclude name="WEB-INF/**" />
<webinf dir="${basedir}/dist/web/WEB-INF/">
<include name="**/*.jar" />
</webinf>
</war>
</target>
<target name="deploy">
<copy file="ROOT.war" todir="${tomcat.deploydir}" />
</target>
<target name="all" depends="setup,compile,buildwar,deploy"></target>
</project>
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="Cars" extends="struts-default" namespace="/">
<action name="login">
<result>/index.jsp</result>
</action>
<action name="CheckLogin" class="main.model.LoginResult">
<result name="SUCCESS" type="chain">loadCars</result>
<result name="ERROR">/index.jsp</result>
</action>
<action name="carList">
<result>/HelloWorld.jsp</result>
</action>
<action name="manageUsers">
<result>/ManageUsers.jsp</result>
</action>
<action name="loadCars" class="main.action.CarAction" method="execute">
<result name="success" type="chain">selectCar</result>
</action>
<action name="selectCar">
<result name="success">/selectCar.jsp</result>
</action>
<action name="hello" class="main.action.HelloWorldAction" method="execute">
<result name="success">/HelloWorld.jsp</result>
</action>
<action name="add"
class="main.action.UserAction" method="add">
<result name="success" type="chain">manageUsers</result>
<result name="input" type="chain">manageUsers</result>
</action>
<action name="delete"
class="main.action.UserAction" method="delete">
<result name="success" type="chain">manageUsers</result>
</action>
<action name="addCar"
class="main.action.CarAction" method="add">
<result name="success" type="chain">selectCar</result>
<result name="input" type="chain">selectCar</result>
</action>
<action name="deleteCar"
class="main.action.CarAction" method="delete">
<result name="success" type="chain">selectCar</result>
</action>
</package>
</struts>
另外,这是我的一些日志...
Nov 12, 2012 11:25:44 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 10215 ms
Nov 12, 2012 11:25:47 PM com.opensymphony.xwork2.util.logging.jdk.JdkLogger warn
WARNING: No configuration found for the specified action: 'CheckLogin' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
Nov 12, 2012 11:25:48 PM com.opensymphony.xwork2.util.logging.jdk.JdkLogger warn
WARNING: No configuration found for the specified action: 'CheckLogin' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
Nov 12, 2012 11:25:55 PM com.opensymphony.xwork2.util.logging.jdk.JdkLogger warn
WARNING: Could not find action or result
There is no Action mapped for namespace [/] and action name [CheckLogin] associated with context path []. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:501)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)
Nov 12, 2012 11:28:57 PM com.opensymphony.xwork2.util.logging.jdk.JdkLogger warn
WARNING: No configuration found for the specified action: 'CheckLogin' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
Nov 12, 2012 11:28:58 PM com.opensymphony.xwork2.util.logging.jdk.JdkLogger warn
WARNING: No configuration found for the specified action: 'CheckLogin' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
Nov 12, 2012 11:29:00 PM com.opensymphony.xwork2.util.logging.jdk.JdkLogger warn
WARNING: Could not find action or result
There is no Action mapped for namespace [/] and action name [CheckLogin] associated with context path []. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:501)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)