我尝试使用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>
答案 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文件。