1

クラスパスを設定してJavaプログラムを実行できるようにする方法、または外部jarを含める方法の例を見つけましたが、両方ではありません。複数の例を 1 つのファイルに結合しようとして失敗しました。

私のソース .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 ターゲットを作成する方法に関する 1 つの例を読んだ後に少し追加しましたpathelementが、まったく役に立ちませんでした。たくさんの例があり、それらの多くは同じことを達成するために異なることをしています(私がやろうとしていることを正確に行うものはありませんが)。する。どんな助けやアイデアも大歓迎です。

編集:サンドロの回答に従って変更<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 に答える