0

次のファイル構造があります。

ServerCode <- src , libs, bin

src のすべてのコードをコンパイルしようとしています。Src には、トップ レベルとサブディレクトリに 2 つの .java ファイルがあります。libs には、プロジェクトのビルドに必要なすべての .jar ファイルが含まれています。

次の build.xml を作成しましたが、コンパイルしようとすると、コンパイラがエラーをスローし、含まれているライブラリのシンボル エラーが見つかりません。

<project default="compile">
    <target name="compile">
        <mkdir dir="bin"/>
        <javac srcdir="src" destdir="bin" classpath="libs/*.jar">
    </target>
</project>
4

3 に答える 3

1

このようにすべてのjarを含めるようにクラスパスを定義します

<target name="compile" depends=""   description="compile the java source files">  
   <javac srcdir="." destdir="${build}">  
        <classpath>  
            <fileset dir="${lib}">  
                <include name="**/*.jar" />  
            </fileset>  
            <fileset dir="${test_lib}">  
                <include name="**/*.jar" />  
            </fileset>  
        </classpath>  
    </javac>  

于 2013-04-05T17:47:36.723 に答える
0

javac とともに classPath 属性を指定する代わりに、 http: //ant.apache.org/manual/using.html で説明されているようにこれを試してください。

  <classpath>
      <pathelement location="libs/*.jar"/>
    </classpath>

上記のリンクから一瞥できる他の方法もあります

于 2013-04-05T17:47:39.223 に答える
0

クラスパス属性でパターンを使用できるとは思いません。私はこれについて間違っている可能性があります。ant を詳細モード ( -v オプション) で実行して、クラスパス属性がどのように使用されているかを確認する必要があります。リテラル文字列としてjavacに渡していると思われます。

これが私がすることです:

<javac target="${javac.target}" source="${javac.source}" destdir="${validator.output.dir}" debug="on"
       nowarn="off"
       memorymaximumsize="128m" fork="true">
    <classpath refid="validator.module.production.classpath"/>
    <src>
        <dirset dir="Validator">
            <include name="src"/>
        </dirset>
    </src>
</javac>

...

<path id="validator.module.production.classpath">
    <fileset dir="Validator/lib/-validator" includes="**/*.jar"/>
</path>

このコードの一部は私の IDE によって生成されているため、少し冗長ですが、おわかりいただけたでしょうか。

于 2013-04-05T17:44:08.627 に答える