【问题标题】:Getting Ant <javac> to recognise a classpath让 Ant <javac> 识别类路径
【发布时间】:2009-04-06 19:18:18
【问题描述】:

我有一个带有 &lt;javac&gt; 命令的 Apache Ant 构建文件,该命令需要四个特定的 JAR 才能在构建 classpath 上。我试过这样做:

<project basedir=".." default="build_to_jar" name="Transnet Spectrum Analyzer">
    <property environment="env"/>
    <property name="src" value="src"/>
    <property name="libsrc" value="library_sources" />
    <property name="build" value="build"/>
    <property name="dist" value="dist"/>
    <property name="target" value="1.5"/>
    <property name="libraries" value="./libraries"/>

    <fileset dir="." id="TSA.classpath">
        <include name="${libraries}/rxtx/RXTXcomm.jar" />
        <include name="${libraries}/commons-logging-1.1.1.jar" />
        <include name="${libsrc}/JCommon/jcommon-1.0.15.jar" />
        <include name="${libsrc}/JFreeChart/jfreechart-1.0.12.jar" />
    </fileset>

    <target name="compile" depends="clean,init" description="compile the source " >

        <echo>Compile from ${src} to ${build}</echo>

        <javac destdir="${build}" source="${target}" target="${target}">
            <compilerarg value="-Xlint:unchecked"/>
            <src path="${src}"/>
            <classpath path="TSA.classpath" />
        </javac>
    </target>

    <!-- blah blah blah -->
</project>

...但是TSA.classpath 中指定的文件都没有出现。如何在我的类路径中包含这些文件?

【问题讨论】:

    标签: java ant classpath


    【解决方案1】:

    这是我目前正在进行的一个项目的示例。我怀疑你可以修改它以适应你的情况。

    <path id="master-classpath">
      <fileset dir="${web.dir}/WEB-INF/lib">
        <include name="*.jar"/>
      </fileset>
    
      <fileset dir="${appserver.lib}">
        <include name="servlet*.jar"/>
      </fileset>
    
      <pathelement path="${build.dir}"/>
    </path>
    
    ...
    
    <javac destdir="${build.dir}">
      <src path="${src.dir}"/>
      <classpath refid="master-classpath"/>
    </javac>
    

    【讨论】:

    • 我正在从 XML 文件定义 ' ... ',然后使用 '' 调用另一个 XML 文件,该文件知道如何构建我的类。如果路径 id 在“外部”XML 中定义,它可以正常工作,但如果在调用 XML 中定义,我会得到一个错误。您知道这些是否可以在单独的 XML 中,如果可以,为什么会出现此错误?
    【解决方案2】:

    试试

    <javac ... classpathref="TSA.classpath">
    

    <javac ...>
        ...
        <classpath refid="TSA.classpath" />
    </javac>
    

    【讨论】:

    • 在被选为最佳答案(@William Brendel)之后,值得一读。谢谢:)
    • 在 Ant 中至少有三种不同的方法可以做到这一点,但还是越多越好,对吧? (第三个是在 javac 中包含一个完全限定的类路径,第四个是创建一个部分类路径,部分引用另一个类路径......等等)
    • 澄清一下,第二个不起作用,至少TSA.classpath&lt;fileset&gt;
    【解决方案3】:

    试试这个:

     <classpath refid="TSA.classpath"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多