0

antを使用してカスタムJavaタスクを実行しようとしていますが、カスタムタスクはすでに.classファイルに正常にコンパイルされています。このカスタムタスクは、アプリケーション内の別のクラスを呼び出します。理論的には、コマンドラインを介してそのプログラムを実行します。

<?xml version="1.0"?>
   <project default="main" name="myproject">
    <property name="distDir" location=".\dist\" />
<property name="mainDir" location=".\" />
<property name="host" value=""/>
<property name="port" value=""/>
<property name="dir" value=""/>
<property name="startTest" value=""/>
<property name="endTest" value=""/>
<property name="testOnly" value=""/>
<property name="userName" value=""/>
<property name="passwd" value=""/>
    <taskdef name="mytask" classname="Classrunner">
        <classpath>  
            <fileset dir="${distDir}>
                <includes="*.jar">
            </fileset>
         </classpath>
    </taskdef>
    <target name="main">
        <mytask host="${host}" port="${port}" dir="${dir}" startTest="${startTest}" endTest="${endTest}" testOnly="${testOnly}" userName="${userName}" passwd="${passwd}"/>
    </target>
</project>

antファイルのtaskdef部分は、実行しようとしているアプリケーションを実行するためのすべてのjarを含むディレクトリを含むファイルセットを指定します。私が遭遇している問題は、コマンドラインからantを呼び出してすべての正しいパラメーターを渡すと、「java.lang.NoClassDefFoundError:com / pega / fuzz / player/CustomClass」というエラーが発生することです。

CustomClassは、カスタムファイルで呼び出すクラスであり、すべてのjarファイルのそのディレクトリ内に存在するため、Antが見つからないため、どこにあるかを指定する方法がわかりません。

4

2 に答える 2

0

taskdefタグのclasspath属性が必要だと思います。
こちらのドキュメントを参照してください:http://ant.apache.org/manual/tutorial-writing-tasks.html#use1

于 2012-07-23T22:35:19.637 に答える
0

職場の誰かが私がこれを修正する方法を見つけるのを手伝ってくれました。

最善の方法は、次のように.batファイルを使用して環境変数classpathを設定することです。

set "CURRENT_DIR=%~dp0"
cd %CURRENT_DIR%
set "CLASSPATH=%CURRENT_DIR%\dist\bsf-2.3.0.jar;%CURRENT_DIR%\....   "

そこから、antの変数を設定し、ここからantファイルを実行できます。

于 2012-07-26T16:34:42.680 に答える