【问题标题】:How to show Assembled Ant Classpath如何显示组装好的 Ant 类路径
【发布时间】:2025-12-17 02:10:02
【问题描述】:

我正在使用 Eclipse 和 Ant 作为构建工具开发一个 Java 项目。当我从命令行运行“ant all”时,我的项目构建没有任何错误,但在 Eclipse 上我得到很多编译错误。

所以我想我应该将 Ant 的 Classpath 复制到我的 Eclipse 项目的 Build Path 中。

是否有一个 Ant 任务/命令来显示这一点?比如“ant just show me yourassembled classpath”之类的?

【问题讨论】:

    标签: ant classpath


    【解决方案1】:

    如果您使用 -verbose 和 -debug 标志运行 Ant,您将看到 javac 正在做什么的所有血腥细节,包括类路径。

    【讨论】:

    • 如果更好地使用这些开关,也请使用-l antLogFile.log,否则所有血腥细节将轻松填满整个屏幕,而无需进行任何更改以了解输出。此外,javac 任务还可以收到一个verbose=true,它将显示用于编译的实际类路径,也许它比使用带有详细信息的 ant 更好(因为它只会减少数据)
    • 感谢您的提示,但我正在寻找 jar 文件和目录的列表,Java 编译器应该在其中查找用于构建应用程序的类。类路径。
    • 有了这些标志,我得到了这样的结果:
    • 查找类 net.sf.antcontrib.walls.CompileWithWalls 从 C:\projects\DmLights\trunk\hybris\bin\platform\lib\ant-contrib-1.0b3.jar net/sf/ 加载antcontrib/walls/CompileWithWalls.class
    【解决方案2】:

    我将介绍一个打印类路径的任务,并使用 antcall 调用该任务。类路径将作为该任务的参数给出。

    【讨论】:

    • 这个主意不错。
    【解决方案3】:

    你可以在你的目标中做这样的事情,例如

    假设您已将类路径定义为

    <path id="project.classpath">
        <fileset dir="${SERVER_DEV}/classes">
            <include name="*.zip"/>
            <include name="*.jar"/>
        </fileset>
        <pathelement location="${SERVER_DEV}/3rdParty/jre/NT/1.5.0/lib/jsse.jar"/>
    </path>
    

    然后你可以做类似的事情

    <target name="compile" depends="init" description="Compiles All Java Sources">
        <property name="myclasspath" refid="project.classpath"/>
        <echo message="Classpath = ${myclasspath}"/>
        <javac ...>
             ....
        </javac>
    </target>
    

    它将打印出用于运行特定目标的类路径

    【讨论】: