2012-04-09 3 views
1

Javaプログラムを実行できるようにクラスパスを設定する方法と、外部のjarファイルを含める(両方ではない)方法の例が見つかりました。 1つのファイルで複数の例を結合しようとする試みが失敗しました。Javaプログラムを実行して外部ジャーをインクルードするためにAntファイルにクラスパスを設定するには?

私のソース.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> 

を作成し、うまく目標をコンパイルし、それを実行になったときそれは言う:Could not find build/TEDI.class. Make sure you have it in your classpath

とにかく私は誰かが私が間違って何をしているか教えてくれることを願っているpathセクション。私はpathelementビットを追加して、ファイルを実行するantターゲットを作成する方法の一例を読んだが、それはまったく役に立たなかった。たくさんの例がありますが、同じことを達成するためには多くの人が違ったことをしています(私がやろうとしていることはまったくありません)ので、私が試しているものが正しいかどうかわかりませんする。どんな助けやアイデアも高く評価されます。

編集:<pathelement location="${build}"/><pathelement location="${output}"/>がサンドロの答えに従って変更されましたが、エラーメッセージはまったく変更されません。

答えて

1

javaタスクでは、クラスファイルのパスではなくJavaクラス名が必要です。あなたが見れば だから、 `PATH`部分の内側に、私はそこに今ではそれを持っている

<java classname="TEDI"> 

代わり

<java classname="${output}/TEDI.class"> 
+0

素晴らしい、それは、ありがとう! – Maltiriel

0

実行するクラスが${output}にあるように、${output}をクラスパスに含める必要があります。

パスに<pathelement location="${output}"/>を追加してみてください。

+0

を使用する必要があります。私は間違った場所に持っていますか? – Maltiriel

+0

申し訳ありませんが、私は私の答えで間違いを犯しました。私は ''を追加してください。あなたは現在 '$ {build}'を含んでいます。 – Sandro

+0

あなたはそうです...私はそれを出力に変更しようとしましたが、それでもまったく同じエラーメッセージが表示されます。私はなぜそれが最初の周りに働いたように思えるのか分かりません(正しいパスを与えました/ TEDI.class)。 – Maltiriel

関連する問題