使用ant运行自定义java任务无法找到类文件

时间:2012-07-23 21:26:11

标签: java ant

我尝试使用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文件以运行应用程序I尝试运行。我遇到的问题是每当我通过命令行调用ant并传递所有正确的参数,然后我得到一个错误说&#34; java.lang.NoClassDefFoundError:com / pega / fuzz / player / CustomClass&#34;

CustomClass是我在自定义文件中调用的类,它存在于所有jar文件的目录中,因此我不确定如何指定它所在的位置,因为Ant无法找到它。 / p>

2 个答案:

答案 0 :(得分:0)

我认为你需要taskdef标签的classpath属性 请参阅此处的文档:http://ant.apache.org/manual/tutorial-writing-tasks.html#use1

答案 1 :(得分:0)

有人在工作中帮我找到解决问题的方法。

最好的方法是通过.bat文件设置环境变量classpath:

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

然后你可以从那里为ant设置一个变量并从这里运行你的ant文件。