2012-07-26 51 views
0

我正在使用spring和webservice。所以我定義的web.xml爲Ant構建期間的部署錯誤

<?xml version="1.0" encoding="UTF-8"?> 
<project name="service" default="deploy"> 
    <property name="builddir" value="build" /> 
    <property name="srcdir" value="../src" /> 
    <property name="deploydir" value="deploy" /> 
    <property name="wardir" value="../WebContent"/> 
    <property name="libdir" value="${wardir}/WEB-INF/lib/" /> 


    <target name="cleanstart"> 
     <delete dir="${builddir}" failonerror="true" /> 
     <echo message="Creating build directories" /> 
     <mkdir dir="${builddir}" /> 
     <mkdir dir="${builddir}/service/WEB-INF/classes" /> 
     <mkdir dir="${deploydir}" /> 
    </target> 

    <target name="service.war"> 

     <path id="basepath"> 
      <!--<fileset dir="${libdir}"> 
       <include name="**/*.jar" /> 
      </fileset> 
      --> 
      <fileset dir="${wardir}/WEB-INF/lib"> 
       <include name="**/*.jar" /> 
      </fileset> 

     </path> 
     <javac srcdir="${srcdir}/" destdir="${builddir}/service/WEB-INF/classes"> 
      <classpath refid="basepath" /> 
     </javac> 

     <war warfile="${builddir}/service.war" webxml="${wardir}/WEB-INF/web.xml" update="update"> 
      <classes dir="${builddir}/service/WEB-INF/classes" /> 
      <fileset dir="${wardir}"> 
       <exclude name="**/*web.xml" /> 
      </fileset> 

     </war> 
    </target> 


    <target name="deploy" depends="cleanstart, service.war"> 
     <copy file="${builddir}/service.war" todir="${deploydir}"> 
     </copy> 
    </target> 

</project> 

而對於春季定義的beans.xml,並使用下面的代碼加載的春天:

ServletConfig servletConfig ; 
ServletContext servletContext = servletConfig.getServletContext(); 
WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(servletContext); 

在Ant構建我有如下例外:

service.war: 
      [javac] /home/vshankar/service_spring/buildTools/build.xml:36: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds 
      [javac] Compiling 20 source files to /home/vshankar/service_spring/buildTools/build/service/WEB-INF/classes 
      [javac] /home/vshankar/service_spring/src/com/f/a/services/servicename/Service.java:6: package javax.servlet does not exist 
      [javac] import javax.servlet.ServletConfig; 
      [javac]     ^
      [javac] /home/vshankar/service_spring/src/com/f/a/services/servicename/Service.java:7: package javax.servlet does not exist 
      [javac] import javax.servlet.ServletContext; 
      [javac]     ^
      [javac] /home/vshankar/service_spring/src/com/f/a/services/servicename/Service.java:49: cannot find symbol 
      [javac] symbol : class ServletConfig 
      [javac] location: class com.f.a.services.servicename.Service 
      [javac]  ServletConfig servletConfig ; 
      [javac] ^
      [javac] /home/vshankar/service_spring/src/com/f/a/services/servicename/Service.java:50: cannot find symbol 
      [javac] symbol : class ServletContext 
      [javac] location: class 
com.f.a.services.servicename.Service 
      [javac]  ServletContext servletContext = servletConfig.getServletContext(); 
      [javac] ^
      [javac] 4 errors 

任何人都可以幫助我嗎?

回答

0

您需要在構建項目時將servlet jar文件放到類路徑中。 (請注意,不鼓勵將這個文件打包到你的ear/war文件中)

+0

是的,如果我包含servlet-api.jar文件,那麼在將war文件部署到webapps的過程中,我得到另一個異常是2012年7月26日12:55:03 PM com.sun.xml.ws.transport.http.servlet.WSServletContextListener contextDestroyed INFO:WSSERVLET13:JAX-WS上下文偵聽器被銷燬 – 2012-07-26 07:28:16