ant编译报错,报都有啊如何说包不存在

ant编译报错,报都有啊,怎么说包不存在啊
下面的包都有啊,而且我从新导了好几遍,怎么报错啊?
什么原因?
XML code

myCompile:
    [javac] Compiling 14 source files to D:\work-m9\ssh2\compile
    [javac] D:\work-m9\ssh2\src\com\david\common\util\FtpUtil.java:3: 软件包 org.apache.commons.io 不存在
    [javac] import org.apache.commons.io.FileUtils;
    [javac]                             ^
    [javac] D:\work-m9\ssh2\src\com\david\common\util\FtpUtil.java:4: 软件包 org.apache.commons.net.ftp 不存在
    [javac] import org.apache.commons.net.ftp.FTPClient;
    [javac]                                  ^
    [javac] D:\work-m9\ssh2\src\com\david\common\util\FtpUtil.java:5: 软件包 org.apache.commons.net.ftp 不存在
    [javac] import org.apache.commons.net.ftp.FTPFile;
    [javac]                                  ^
    [javac] D:\work-m9\ssh2\src\com\david\common\util\FtpUtil.java:20: 找不到符号
    [javac] 符号: 类 FTPClient
    [javac] 位置: 类 com.david.common.util.FtpUtil
    [javac]     private static FTPClient ftpClient;
    [javac]                    ^
    [javac] D:\work-m9\ssh2\src\com\david\common\util\StringTool.java:10: 软件包 org.apache.commons.codec.binary 不存在
    [javac] import org.apache.commons.codec.binary.Hex;
    [javac]                                       ^
    [javac] D:\work-m9\ssh2\src\com\david\common\util\StringTool.java:11: 警告:com.sun.org.apache.xerces.internal.impl.dv.util.Base64 是 Sun 的专用 API,可能会在未来版本中删除
    [javac] import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
    [javac]                                                       ^
    [javac] D:\work-m9\ssh2\src\com\david\common\util\StringUtil.java:12: 软件包 org.apache.commons.codec.binary 不存在
    [javac] import org.apache.commons.codec.binary.Base64;
    [javac]                                       ^
    [javac] D:\work-m9\ssh2\src\com\david\hibernate\dao\BaseDao.java:4: 软件包 org.springframework.orm.hibernate3.support 不存在
    [javac] import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
    [javac]                                                  ^
    [javac] D:\work-m9\ssh2\src\com\david\hibernate\dao\BaseDao.java:6: 找不到符号
    [javac] 符号: 类 HibernateDaoSupport
    [javac] public class BaseDao extends HibernateDaoSupport{
    [javac]                              ^
    [javac] D:\work-m9\ssh2\src\com\david\hibernate\dao\impl\UserDaoImpl.java:5: 软件包 org.hibernate 不存在
    [javac] import org.hibernate.Query;
    [javac]                     ^
    [javac] D:\work-m9\ssh2\src\com\david\web\action\BaseAction.java:3: 软件包 javax.servlet 不存在
    [javac] import javax.servlet.ServletContext;
    [javac]                     ^
    [javac] D:\work-m9\ssh2\src\com\david\web\action\BaseAction.java:5: 软件包 javax.servlet.http 不存在
    [javac] import javax.servlet.http.HttpServletRequest;
    [javac]                          ^
    [javac] D:\work-m9\ssh2\src\com\david\web\action\BaseAction.java:6: 软件包 javax.servlet.http 不存在
    [javac] import javax.servlet.http.HttpServletResponse;
    [javac]                          ^




------解决方案--------------------
....贴错了..

XML code

<?xml version="1.0" ?>
<!--  
     默认任务 default 可以指定直接执行ant
     命令的时候默认的任务可以通过指定任务
    名称(target name)运行不同的任务 比如:
    ant package
-->
<project name="tax-calculator" default="package">
    <!--  
        设置property 可以在其他地方通过${xxx}
         的方式引用 也可以通过 property file设
        置具体的properties文件 这里有个优先级
        的问题 首先你可以在执行ant命令 这个优
        先级是最大的 其次的是properties 文件
        中的属性 最后的优先级是写在build.xml
        中的property(很怪)
    -->
    <property name="project.name" value="exampleant" />
    <property name="project.version" value="snapshot" />
    <property name="base.dir" value="." />
    <property name="dist.dir" value="${base.dir}/dist" />
    <property name="testlog.dir" value="${base.dir}/testlog" />
    <property name="testlog.html.dir" value="${testlog.dir}/html" />
    <property name="source.dir" value="${base.dir}/src" />
    <property name="build.dir" value="${base.dir}/build" />
    
    <property name="source.main.dir" value="${source.dir}/main" />
    <property name="source.test.dir" value="${source.dir}/test" />
    <property name="build.classes.dir" value="${build.dir}/classes" />
    <property name="build.test.classes.dir" value="${build.dir}/test-classes" />
    <property name="lib.dir" value="${base.dir}/lib" />

    <!-- 
        输出当前环境的信息              
    -->
    <target name="display-properties">
        <echoproperties />
    </target>

    <!--
        设置类路径
    -->
    <path id="compile.classpath">
        <fileset dir="${lib.dir}" includes="*.jar" />
        <pathelement path="${build.classes.dir}" />
    </path>

    <path id="test.compile.classpath">
        <path refid="compile.classpath" />
        <pathelement path="${build.test.classes.dir}" />
    </path>
    <!--
        target    任务
            name:任务名称
            depends:前置任务(强调该任务执行前必须执行depends指定的任务)
            description:描述
    -->
    
    <!-- 
        mkdir
            dir:目录信息
    -->
    <target name="init">
        <mkdir dir="${build.classes.dir}" />
        <mkdir dir="${build.test.classes.dir}" />
        <mkdir dir="${dist.dir}" />
        <mkdir dir="${testlog.html.dir}"/>
    </target>

    <!--
        javac    编译Java源文件
            srcdir:源文件目录 
            destdir:输出目录
            includes:告诉Ant编译过程中编译哪些位置的源文件(其他位置被忽视)
            excludes:告诉Ant编译过程中忽略那些位置的源文件
            debug:是否开启调试信息
            source:强调开发源代码的JDK版本
            target:强调编译后的Class文件应该支持的JDK版本
            compiler:指定编译器(不一定非得使用Sun的标准编译器进行编译)
    -->
    <target name="compile" depends="init" description="Compile Java code">
        <javac srcdir="${source.main.dir}/resources" destdir="${build.classes.dir}" source="1.6" target="1.6" debug="true" includes="com.javapowertools.taxcalculator.**" />
        <javac srcdir="${source.main.dir}/java" destdir="${build.classes.dir}" />
    </target>

    <target name="compile-test" depends="compile" description="Compile Unit Tests">
        <javac srcdir="${source.test.dir}/resources" classpathref="test.compile.classpath" destdir="${build.test.classes.dir}" />
        <javac srcdir="${source.test.dir}/java" classpathref="test.compile.classpath" destdir="${build.test.classes.dir}" />
    </target>

    <!--
        jar        打包Java文件
            destfile:指定输出文件
            basedir:类文件所在位置
    -->
    <target name="package" depends="compile,test,test-report" description="Create Jar file">
        <jar destfile="${dist.dir}/${project.name}-${project.version}.jar" basedir="${build.classes.dir}" />
    </target>
    
    <!-- 
        junit    单元测试
            printsummary:是否显示单元测试类列表,如果是否的话Ant将运行测试但不显示测试结果,除非有单元测试失败
            haltonfailure:是否测试失败就停止构建,默认为否,也就是即使测试失败也继续构建 
            fork:是否重新启用一个JVM进程进行测试(默认为false 正常情况下重新启用一个JVM进程进行测试会有意想不到的效果)
            
            assertions    指定断言机制
                enable    该属性为所有非系统类激活断言
                    package:指定某一个包下的类激活断言
                    class:指定具体某一个类激活断言
                    
                
            test    指定单元测试的类
                name:类名
                
            batchtest    批量测试
            
                todir:指定日志输出目录
                
                fileset    文件信息
                    dir:所在目录
                    includes:包含的测试类
            formatter    指定详细信息输出格式
            
                type:有三种格式    brief只提供失败测试的详细信息    plain提供了通过的和失败的测试数量,并列出实际成功的测试
                     xml则用于生成报告
                usefile:是否创建文件,默认为true
    -->
    <target name="test" depends="compile-test" description="Run unit tests">
        <junit printsummary="true" haltonfailure="false" fork="false" failureproperty="test.failures">
            <assertions>
                <enable/>
            </assertions>
            <classpath refid="test.compile.classpath" />
            <formatter type="xml" usefile="true" />
            <!--
                <test name="com.javapowertools.taxcalculator.TaxRateTest" />
            -->
            <batchtest todir="${testlog.dir}">
                <fileset dir="${build.test.classes.dir}" includes="**/*Test.class" />
            </batchtest>
        </junit>
    </target>
    
    <!-- 
        关于生成测试报告的建议
            如果开发人员选择了生成测试报告 也就表示不能在测试出现问题的时候简单的停止构建(这样会影响报告的完整性)
            但是将haltonfailure属性设置为true并不是好的解决方式,另一方面,如果测试失败就停止构建是个好主意,
            事实上持续构建系统是依赖这一点的
            解决方式参考Java开发超级工具集中文版50页
    -->
    
    <!-- 
        junitreport    生成报告(通过打包在ant-junit.jar内的xsl样式表来生成 有必要的话可以自行更改)
            todir:源文件(XML)目录
            
            report    HTML生成模板信息定义
                format:指定是否使用Frame 有noframes和frames两种
                todir:指定HTML文件输出位置
                styledir:可以自己指定HTML使用的样式
    -->
    <target name="test-report" depends="test" description="Generate HTML unit test reports">
        <junitreport todir="${testlog.dir}">
            <fileset dir="${testlog.dir}">
                <include name="TEST-*.xml"/>
            </fileset>
            <report format="frames" todir="${testlog.html.dir}"/>
        </junitreport>
        <fail if="test.failures" message="There were test failures."/>
    </target>
    
    <target name="clean" description="Deletes generated dire ctories">
        <delete dir="${build.dir}" />
        <delete dir="${dist.dir}" />
        <delete dir="${testlog.dir}" />
    </target>

</project>