1

我找到了有关如何设置类路径以便可以执行 Java 程序或包含外部 jar 的示例,但不能同时包含两者。我尝试将多个示例合并到一个文件中失败了。

我的源 .java 文件在 src 目录中,我要执行的文件是 src/TEDI.java,类文件被正确放入构建目录,我所有的 jar 都在目录 jung2-2_0_1 中。我可以使用以下 ant 文件编译我的程序,但不能执行:

<?xml version="1.0"?>
<project name="TEDI" basedir="." default="execute">
    <property name="src" value="src"/>
    <property name="output" value="build"/>
    <property name="lib" value="jung2-2_0_1"/>

    <target name="execute" depends="compile">
        <echo>
            Executing TEDI.
        </echo>
        <java classname="${output}/TEDI.class">
            <classpath refid="java"/>
        </java>
    </target>

    <target name="compile" depends="create">
        <echo>
            Compiling source files.
        </echo>
        <javac destdir="${output}">            
            <src path="${src}"/>            
            <classpath refid="java"/>
        </javac>
    </target>

    <target name="clean">
        <echo>
            Deleting old class files.
        </echo>
        <delete dir="${output}"/>
    </target>

    <target name="create" depends="clean">
        <echo>
            Creating output directory.
        </echo>
        <mkdir dir="${output}"/>
    </target>

    <path id="java">
        <pathelement location="${output}"/>
        <fileset dir="${lib}">
            <include name="*.jar"/>
        </fileset>
    </path>
</project>

当我运行 ant 时,它会很好地完成清理、创建和编译目标,然后当它开始执行时,它会说:Could not find build/TEDI.class. Make sure you have it in your classpath

无论如何,我希望有人能告诉我我在该path部分做错了什么。在阅读了一个关于如何创建 ant 目标以执行文件的示例后,我添加了pathelement一点,但它根本没有帮助。有很多示例,其中很多示例以不同的方式实现相同的目标(虽然没有一个完全符合我的目标),所以我不知道哪种方法适合我正在尝试的方法去做。任何帮助或想法将不胜感激。

编辑:根据 Sandro 的回答更改<pathelement location="${build}"/><pathelement location="${output}"/>,但它根本不会更改错误消息。

4

2 回答 2

1

java任务需要一个 Java 类名,而不是类文件的路径。所以你应该使用

    <java classname="TEDI">

代替

    <java classname="${output}/TEDI.class">
于 2012-04-09T19:45:20.633 回答
0

由于您要执行的类似乎在 中${output},因此您必须包含${output}在您的类路径中。

尝试添加<pathelement location="${output}"/>到您的路径。

于 2012-04-09T18:13:24.820 回答