4

示されているようにクラスパスを宣言するビルドファイルがあります

<path id="compile.classpath">
    <fileset dir="${basedir}/lib"    includes="**"/>        
    <fileset dir="${jboss.home}/lib" includes="**"/>        
    <pathelement path ="${build.classes.dir}"/>
</path>

ドキュメントを見てみましたが、の使い方が わかりませんpathelement

タスクの実行中にこのクラスパスを参照するためにIDが使用され、ファイルセットにjarファイルが含まれていることを知っています。

編集1: 私の疑問は、なぜfilesetクラスファイルを代わりに含めることができないのpathelementかということです。

4

2 に答える 2

6

最新の編集:

私の疑問は、ファイルセットを使用してパス要素の代わりにクラスファイルを含めることができないのはなぜですか?

ファイルセットを使用する場合は、次のように一連のクラス ファイルをパスに追加します。

CLASSPATH=classes/MyClass1.class:classes/MyClass2.class:classes/MyClass3.class:....

Java が期待するのは単純に次の場合です。

CLASSPATH=classes

jar (および WAR、EAR など) ファイルのみがクラスパスに明示的にリストされているため (Java はそれらを開いてクラス ファイルをロードします)、したがって ANT にファイルセットが必要です。

アップデート

オラクルのドキュメントは次のとおりです。

.jar、.zip、または .class ファイルへのクラスパス。各クラスパスは、クラスパスの設定に応じて、ファイル名またはディレクトリで終わる必要があります。

  • .class ファイルを含む .jar または .zip ファイルの場合、クラスパスは .zip または .jar ファイルの名前で終わります。
  • 名前のないパッケージ内の .class ファイルの場合、クラス パスは .class ファイルを含むディレクトリで終わります。
  • 名前付きパッケージ内の .class ファイルの場合、クラス パスは「ルート」パッケージ (完全なパッケージ名の最初のパッケージ) を含むディレクトリで終わります。
于 2013-01-22T08:45:33.907 に答える
2

'pathelements' hereに関する同様の質問がすでにありました。提供されたドキュメントから:「あなたの例のようなパス構造の場合:「パスのような構造には、ネストされた要素を介して別のパスのような構造(パス自体がリソースコレクションである)への参照を含めることができます」

 <path id="base.path">
  <pathelement path="${classpath}"/>
  <fileset dir="lib">
    <include name="**/*.jar"/>
  </fileset>
  <pathelement location="classes"/>
</path>

クラスパス構造の場合: 「パス属性は、事前定義されたパスで使用することを目的としています」

<classpath>
  <pathelement path="${classpath}"/>
  <pathelement location="lib/helper.jar"/>
</classpath>
于 2013-01-21T14:16:33.757 に答える