2

私のJava Webプロジェクトには<T>、antスクリプトのようなコードがあり、javacはJDKを使用してJavaコードをコンパイルしていますが、コンパイルに成功しません。

後で、Eclipse JDT を使用してコンパイルする必要があることがわかりました。

そして、Eclipse では、次のように実行すると、ant スクリプトは success.when を実行できます。

build.xml を右クリック ---> 実行 ---> 実行 ---> 外部ツール構成、JRE をクリックし、[ワークスペースと同じ JRE で実行] を選択します。

その後、ant は eclipse で正常に実行できます。

しかし、Tomcat をコンパイル、war、デプロイ、および起動するために、.bat および .sh ファイルを作成して、ant スクリプトを呼び出したいと考えています。したがって、ant はコマンドから実行する必要があります。もっと試してみましたが、常にエラーが発生しました: クラスが見つかりません: org.eclipse.jdt.core.JDTCompilerAdapter

PS、eclipse プラグインの JDT に関する jar ファイルを ant_home/lib ディレクトリにコピーしました。

あなたの応答を願っています。前もって感謝します!

build.xml

`

<tstamp>
    <format property="build.time" pattern="yyyy-MM-dd" />
</tstamp>

<path id="project.classpath">
    <fileset dir="${lib.dir}">
        <include name="**/*.jar" />
    </fileset>
    <fileset dir="${catalina.home}/lib">
        <include name="*.jar" />
    </fileset>
    <fileset dir="${ant.dir}">
        <include name="**/*.jar" />
    </fileset>
</path>

<target name="clear">
    <delete dir="${build.dir}" />
    <delete dir="${dist.dir}" />
    <delete file="${catalina.home}/webapps/${webapp.name}.war" />
    <delete dir="${catalina.home}/webapps/${webapp.name}" />
</target>

<target name="init" depends="clear">
    <mkdir dir="${build.dir}/classes" />
    <mkdir dir="${dist.dir}" />
</target>

<target name="compile" depends="init">
    <echo message="begin compile..." />
    <javac srcdir="${src.dir}" destdir="${build.dir}/classes" 
        includeantruntime="false" nowarn="on" 
        source="1.6" target="1.6" deprecation="true" debug="true" 
        encoding="UTF-8" classpathref="project.classpath">
        <compilerarg line="-Xlint:unchecked" />
    </javac>
    <copy todir="${build.dir}">
        <fileset dir="${src.dir}">
            <include name="**/*.xml" />
            <include name="**/*.properties" />
            <include name="**/*.sql" />
        </fileset>
        <fileset dir="${config.dir}">
            <include name="**/*.xml" />
            <include name="**/*.properties" />
            <include name="**/*.sql" />
        </fileset>
    </copy>
    <echo message="end compile..." />
</target>

<target name="war" depends="compile">
    <echo message="begin war..." />
    <war destfile="${dist.dir}/${webapp.name}.war" basedir="${webRoot.dir}" 
        webxml="${webRoot.dir}/WEB-INF/web.xml">
        <lib dir="${lib.dir}" />
        <classes dir="${build.dir}/classes" />
        <fileset dir="${webRoot.dir}">
            <include name="***.*" />
        </fileset>
    </war>
    <echo message="end war..." />
</target>

<target name="deploy" depends="war">
    <echo message="begin deploy..." />
    <copy file="${dist.dir}/${webapp.name}.war"    todir="${catalina.home}/webapps" />
    <echo message="end deploy..." />
</target>

</project>

`

4

3 に答える 3

1

コマンド ラインからの使用に Eclipse IDE の ant を使用しないでください。

ant を個別にダウンロードし、Windows の場合は C:\apache\ant のような場所に解凍し、その bin ディレクトリを PATH に入れます。CLASSPATH にも追加する必要があるいくつかの jar が付属しています。

Mac OSX の場合、「sudo port install ant」がすべてを処理します。

于 2012-05-09T03:16:28.130 に答える
0

記録として、コンテキスト内、つまりマルチスレッドの状況<javac>でそのコンパイラ アダプタを使用してタスクを使用すると、このエラーがランダムに発生します (頻繁に動作します) 。<parallel>

コンパイラ アダプタ jar が一時的にロックされており、スレッド クラスローダなどからアクセスできないようです。parallel><実行を削除する以外に、まだ回避策はありません。

于 2014-09-29T20:29:10.887 に答える