使用ant运行自定义java任务可以';找不到类文件
我正在尝试使用ant运行自定义java任务,自定义任务已经成功地编译到.class文件中。这个自定义任务将调用应用程序中的另一个类,理论上是通过命令行运行该程序使用ant运行自定义java任务可以';找不到类文件,java,ant,Java,Ant,我正在尝试使用ant运行自定义java任务,自定义任务已经成功地编译到.class文件中。这个自定义任务将调用应用程序中的另一个类,理论上是通过命令行运行该程序 <?xml version="1.0"?> <project default="main" name="myproject"> <property name="distDir" location=".\dist\" /> <property name="mainDir" locat
<?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>
我认为您需要taskdef标记的classpath属性。
请参阅此处的文档:工作中的某个人帮助我找到了解决此问题的方法
最好的方法是通过.bat文件设置环境变量classpath,如下所示:
set "CURRENT_DIR=%~dp0"
cd %CURRENT_DIR%
set "CLASSPATH=%CURRENT_DIR%\dist\bsf-2.3.0.jar;%CURRENT_DIR%\.... "
然后,您可以在这里为ant设置一个变量并运行ant文件。问题不是查找我编写的自定义任务,而是查找自定义任务引用的类。我明白您的意思。你确定它在一个jar文件中吗?它在正确的包中吗${distDir}指向的目录包含所需的所有jar文件。我用WinZip手动进入,看了看,它就在那里。似乎有一些人遇到了这个问题,但没有真正的解决方案。您可以调试它,在任务类(正在加载的类)上设置断点,然后检查堆栈。然后您可能会看到类加载器配置在做什么。