クラスパスの指定

広告

次にクラスパスをコンパイル時に指定したい場合の方法です。「classpath」属性を使って指定します。

<?xml version="1.0" encoding="Shift_JIS" ?>

<project name="antsample" default="compile">

  <target name="compile">
    <javac srcdir="./src" destdir="./class" classpath="aaa.jar" />
  </target>

</project>

ファイルの指定は相対指定でも絶対指定でも可能です。また複数のファイルを指定する場合はセミコロン(;)で区切って指定して下さい。また特定のファイルだけではなく、ディレクトリでの指定も可能です。

<?xml version="1.0" encoding="Shift_JIS" ?>

<project name="antsample" default="compile">

  <target name="compile">
    <javac srcdir="./src" destdir="./class" classpath="aaa.jar;bbb.jar" />
  </target>

</project>

では実際に試してみます。ここではJavaMailのプログラムをコンパイルしてみましょう。JavaMailのプログラムをコンパイルする場合には「mail.jar」及び「activation.jar」にクラスパスを設定しておく必要があります。

msgsendsample.java

build.xmlが置かれているディレクトリ内に「src」ディレクトリを作成し、その中に先ほどの「msgsendsample.java」を設置します。またコンパイル後に作成されるクラスファイルの置き場所としてbuild.xmlが置かれているディレクトリ内に「class」ディレクトリを作成しました。

-sample4       build5.xml
  |
  +-- src      msgsendsample.java
  |
  +-- class    クラスファイルの置き場所

またクラスパスに「d:/java/javamail-1.3.3_01/mail.jar」と「d:/java/jaf-1.0.2/activation.jar」を指定します。絶対パスでの指定です。

build.xmlは下記の通りです。

build5.xml

<?xml version="1.0" encoding="Shift_JIS" ?>

<project name="antsample" default="compile">

  <target name="compile">
    <javac srcdir="./src" destdir="./class" 
        classpath="d:/java/javamail-1.3.3_01/mail.jar;
                   d:/java/jaf-1.0.2/activation.jar"
    />
  </target>

</project>

ではAntを実行してみます。

AntでのJavacタスクでクラスパス指定

クラスパスが必要な場合でも無事コンパイルが出来ました。

<classpath>要素を使った指定

クラスパスの指定は属性として指定する以外にも<classpath>要素を使って指定することも可能です。先ほどのbuild.xmlは下記のように書き換えることが出来ます。

<?xml version="1.0" encoding="Shift_JIS" ?>

<project name="antsample" default="compile">

  <target name="compile">
    <javac srcdir="./src" destdir="./class">
      <classpath>
        <pathelement path="d:/java/javamail-1.3.3_01/mail.jar" />
        <pathelement path="d:/java/jaf-1.0.2/activation.jar" />
      </classpath>
    </javac>
  </target>

</project>

<classpath>要素を<javac>要素の子要素として定義しています。そしてさらに子要素として<pathelement>要素を使い、その「path」属性でクラスパスに追加したいファイルを定義しています。

では一応試しておきます。先ほどのbuildファイルをbuild4.xmlとして保存しAntを実行してみます。

build6.xml

実行結果は下記の通りです。

AntでのJavacタスクでクラスパス指定

( Written by Tatsuo Ikura )