Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ant javac can';找不到其他项目编译类_Ant_Project_Javac - Fatal编程技术网

ant javac can';找不到其他项目编译类

ant javac can';找不到其他项目编译类,ant,project,javac,Ant,Project,Javac,下面是我的ant脚本的简化版本(它包含项目元素等) 我是ant新手,无法理解为什么“compileTests”不编译,而“compileFoo”编译 我得到的错误是“包不存在”,因为compileTests项目中的类在compileFoo项目中找不到已编译的类,即使它们编译得很好,我也可以在文件系统中看到它们,并且它们的路径列在类路径中(我认为这是必要的?) 显然有一些基本的东西我不明白。有人能解释一下吗 <path id="build_classpath"> <fil

下面是我的ant脚本的简化版本(它包含项目元素等)

我是ant新手,无法理解为什么“compileTests”不编译,而“compileFoo”编译

我得到的错误是“包不存在”,因为compileTests项目中的类在compileFoo项目中找不到已编译的类,即使它们编译得很好,我也可以在文件系统中看到它们,并且它们的路径列在类路径中(我认为这是必要的?)

显然有一些基本的东西我不明白。有人能解释一下吗

<path id="build_classpath">
    <fileset dir="${other_required_jars}" includes="**/*.jar" />
    <fileset dir="${foo_build_location}" includes="**/*.class" />
</path>


<target name="compileFoo" description="compile">
    <javac srcdir="${foo_source_directory}\test-src" includeantruntime="false" destdir="${foo_build_location}" includes="**/*.java" excludes="" debug="on" optimize="off" deprecation="on" verbose="on">
        <classpath refid="build_classpath" />
    </javac>
</target>


<target name="compileTests" description="compile">
    <javac srcdir="${test_source_directory}\test-src" includeantruntime="false" destdir="${test_build_location}" includes="**/*.java" excludes="" debug="on" optimize="off" deprecation="on" verbose="on">
        <classpath refid="build_classpath" />
    </javac>
</target>

您的类路径错误。类路径不包含一组.class文件。它包含一组jar或目录,每个目录包含包树的根。因此类路径应该只包含一个元素:
${foo\u build\u location}

<path id="build_classpath">
    <fileset dir="${other_required_jars}" includes="**/*.jar" />
    <pathelement location="${foo_build_location}"/>
</path>


JB Nizet,谢谢您的回复。我对其进行了编辑,以表明其他jar仍然需要build_类路径,因此我无法删除它,因为测试项目也需要这些路径。你知道如何编辑它,以便它同时使用现有的JAR和来自foo项目的类吗?我编辑了我的答案,向你展示了如何将目录本身广告到类路径,而不是它的所有.class文件。绝对正确!谢谢你。这可能是一个糟糕的借口,因为每个人都必须处理相同的情况,但是ant文档并没有太大的帮助,因为它包含的只是我甚至没有使用的java类的信息。我只是假设会有一个元素列表,以及每个元素中有效的适用元素。非常感谢你的帮助!为我工作。谢谢@JBNizet