2016-07-13 22 views
1

私は会社のビルドスクリプトを拡張して、場合によってはビルドしたい特別なモジュールを追加しています。私は、ビルドプロセスの初期段階でコンパイルされるため、残りのコードベースのコンパイル済みクラスファイルがどこにあるのかを示すantスクリプトを作成しました。ファイルがこの場所にあることを100%確信しています。Antはクラスパスクラスを見つけることができません

しかし、私がこのモジュールをコンパイルしようとすると、クラスパスリファレンスはそれらのクラスを見ることができず、 "パッケージが存在しません"と "シンボルを見つけることができません"というエラーが発生します。

私が間違っていることは分かりません。ここで助けを求めています。

<property name="classpath" value="${dir.dev}/out/production/Main" 
<path id="pfClasspath"> 
    <fileset dir="${classpath}"> 
     <include name="**/*.class"/> 
    </fileset> 
    <fileset dir="${dir.dev.lib}"> 
     <include name="**/*.jar" /> 
    </fileset> 
    <fileset file="${lib.json}" /> <!-- TODO try removing this --> 
</path> 
<target name="compile" depends="prepare"> 
    <javac source="1.7" classpathref="pfClasspath" srcdir="${dir.project}/src" destdir="${dir.project.build.classes}" /> 
</target> 

「クラスパス」プロパティが100%を指しているディレクトリは、プロジェクトの残りのすべてのクラス・ファイルが含まれています

は、ここに私のビルドスクリプトコードです。そのレベルはソース側の "src"ディレクトリに相当し、その中にはcom/companyName/etc ...フォルダがあります。

マイコードには、この場所でコンパイルされたクラスへの参照が含まれています。しかし、アリはそれらを見つけることはありません。どんな助け?

+0

何を準備しますか? – Apostolos

+0

あなたはプロパティタグを閉じていません。 – Ian

+0

これはおそらく私がそれをコピーしたときのバグだった、そのタグは元のファイルで閉じられています。しかし、良いキャッチ。 – user2223059

答えて

0

ではなく

<path id="pfClasspath"> 
    <pathelement path="${classpath}" /> 
    ... 
</path> 

を試してみてください。クラスパスを指定しても、クラスパス上にあるすべての単一クラスファイルを指定することは意味しません。これは、を使用して<path>要素を定義するときの作業です。

+0

したがって、pfClasspathが指すディレクトリには、たくさんのクラスがあります。おそらく数百の.classファイルを持つ巨大なディレクトリ階層です。 pathelementはまだ動作しますか? – user2223059

+0

@ user2223059:はい、私はそれがうまくいくと確信しています。コンパイル対象が次のように 'javac'を呼び出すのは、コンパイル対象が' javac -cp $ {dir.dev}/out/production/Main; $ {dir.dev.lib} /MyJar1.jar;$ {dir.dev.lib} /MyJar2.j ar -sourcepath ... 'を実行します。 'javac'が' myapp.MyClass'のようなシンボルを見つけるたびに、 '$ {dir.dev}/out/production/Main'に関連したファイル' myapp/MyClass.class'を最初に検索し、次に内部'$ {dir.dev.lib} /MyJar1.jar'そして最後に' $ {dir.dev.lib}/MyJar2.jar'の中にあります。 '$ {dir.dev}/out/production/Main'ディレクトリ内にいくつのファイルが実際に入っていても関係ありません。 –

関連する問題