简体   繁体   中英

There is no Action mapped for namespace [/] and action name [CheckLogin] associated with context path []

I am getting an error when trying to deploy my application using ant. When i run the application from intellij it deploys and runs correctly. However, when I build and deploy using ant I am getting the error:

There is no Action mapped for namespace [/] and action name [CheckLogin] associated with context path [].

I have included my 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>

Also, here are some of my logs...

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)

(Further clarification of Mohana's comment.)

Referring to the following section of your build.xml file:

<target name="compile">
    ...
    <javac destdir="${dist.dir}/web/WEB-INF/classes" srcdir="${basedir}/src">
    ...
    <copy todir="${dist.dir}/web/WEB-INF">
        <fileset dir="src">
            <include name="**/*.properties" />
            <include name="**/*.xml" />
        </fileset>
    </copy>
</target>

The Struts 2 config will end up in the WEB-INF directory, whereas S2 expects it to be on the classpath.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM