找不到taskdef ant任务

use*_*636 10 java ant task

全部 -

我正在按照此页面上最简单的说明操作:

http://ant.apache.org/manual/develop.html

但是,当我尝试执行目标"main"时,我在netbeans中遇到此错误:

taskdef class dec102012.MyAntTask cannot be found using the classloader AntClassLoader[]
Run Code Online (Sandbox Code Playgroud)

但是这个错误没有意义,因为扩展"Task"的新Java类看起来像这样:

package dec102012;

import org.apache.tools.ant.BuildException;

public class MyAntTask extends org.apache.tools.ant.Task{
    private String msg;

    // The method executing the task
    public void execute() throws BuildException {
        System.out.println(msg);
    }

    // The setter for the "message" attribute
    public void setMessage(String msg) {
        this.msg = msg;
    }
}
Run Code Online (Sandbox Code Playgroud)

build.xml中的相关部分如下所示:

<taskdef name="mytask" classname="dec102012.MyAntTask" classpath="dec102012"/>

<target name="main">
    <mytask message="Hello World! MyVeryOwnTask works!"/>
</target>
Run Code Online (Sandbox Code Playgroud)

use*_*636 15

问题是Ant类加载器需要知道*.class文件所在的位置.

一旦我将build.xml更改为:

<taskdef name="mytask" classname="dec102012.MyAntTask" classpath="build/classes"/>

  <target name="main">
    <mytask message="Hello World! MyVeryOwnTask works!"/>
  </target>
Run Code Online (Sandbox Code Playgroud)

它工作(即它打印出Hello World消息).