2012-11-12 23 views
2

关联的命名空间[/]和操作名称[CheckLogin]映射的操作在尝试使用ant部署我的应用程序时出现错误。当我从intellij运行应用程序时,它部署并正确运行。然而,当我构建和部署使用蚂蚁我收到错误:没有为与上下文路径[]

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

我已经包括了我的蚂蚁的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) 
+1

试试这个例子http://struts.apache.org/2.x/docs/create-struts-2-web-application-with-artifacts-in-web-inf-lib-and-use-ant- to-build-the-application.html,我认为它没有正确放置struts.xml文件,它应该在\ WEB-INF \ classes \ struts.xml中 –

回答

0

(进一步澄清Mohana的评论的。)

参考您build.xml文件的以下部分:

<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> 

撑杆2的配置将在WEB-INF目录中结束,而S2希望它是在类路径。