2017-02-16 3 views
0

私が改訂したコードがいくつかあります。AntでビルドされたJavaを実行しているクラスエラーが表示されない

ディレクトリでAntを実行しようとすると、見つからないクラスで失敗します。 antに-libオプションを指定することで、既存のクラスの場所を指定できます。コンパイルが正常に動作しますが、作成されたdist ZIPファイルにライブラリがないと思われます。実行しようとすると、-libオプションで指定したクラスである欠落しているクラスに関するエラーが表示されるため、おそらく私が-libオプションを使用した方法に起因するでしょう。

正規のAntコマンドに-libコマンドで指定した追加のクラスを含めるにはどうすればよいですか?

答えて

1

libディレクトリ/ファイルをzipファイルにコピーするターゲットを作成することができます。 一時ディレクトリを作成してファイルをコピーし、次にlibディレクトリをコピーしてからzip temp dirをコピーするtargetを実行します。

<target name="copyLib"> 
    <copy todir="${temp.dir}"> 
     <fileset dir="${lib.dir}"> 
      <include name="*.jar" />       
     </fileset> 
    </copy> 
</target> 

パスを更新し、このターゲットをcreate zip targetに呼び出します。

+0

おかげで、私はアリについてほとんど知っています。私は実際にそれをどのようにしますか?私が必要とするように聞こえる。 –

1

コンパイラのタスクは次のようになります。

<javac srcdir="${base}/src" 
     destdir="${base}/classes" 
     classpath="${base}/lib"> 
</javac> 

そしてzipタスクは次のようになります。

<zip 
    destfile="${base}/dist.jar" 
    basedir="${base}/classes" 
    includes="..." 
    excludes="..."> 
</zip> 

ので、ソースはクラスでコンパイルされ、瓶にジップが、ライブラリが使用されていますコンパイルのためには、のjarには含まれていません。実行時の依存関係です。

+0

これは、$ {base}/libにjavaクラスがあり、jarのセットではないと仮定しています – MeBigFatGuy

+0

ANTのドキュメントhttps://ant.apache.org/manual/Tasks/javac.htmlによると、 'classpath'には、 jarファイルhttps://ant.apache.org/manual/using.html#path – fustaki

+0

を持つフォルダであれば、 MeBigFatGuy

0

ファイルセットを使用して、ANTスクリプトの先頭にパスを次のように宣言することをお勧めします。

<path id="build.path"> 
    <fileset dir="lib" includes="*.jar"/> 
</path> 

ユーザーに正しい "-lib"パラメータを指定させるのに比べて、エラーが発生しにくくなります。最後に同じファイルセットは、あなたが作成しているzipファイル内の同じjarファイルを含めるために使用することができます

<zip destfile="${dist.dir}/mycode.zip"> 
    .. 
    .. 
    <fileset dir="lib" includes="*.jar"/> 
    </zip> 
関連する問題