1

我正在尝试为 Apache Ant 编写一个自定义任务(遵循本教程)。

目前,我的任务如下所示:

package my.package;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;

class MyTask extends Task
{
    private String command;

    public void setCommand(String command)
    {
        this.command = command;
    }

    public void execute() throws BuildException
    {
        System.out.println(command);
    }
}

我在构建文件中使用该任务,如下所示:

<?xml version="1.0"?>
<project name="TaskExample" default="main" basedir=".">
  <taskdef name="mytask" classname="my.package.MyTask"/>

  <target name="main">
    <mytask command="foobar" />
  </target>
</project>

调用 Ant 时,出现以下错误:

> ant -lib .
Buildfile: /path/to/build.xml

main:

BUILD FAILED
/path/to/build.xml:6: Could not create type mytask as the class class my.package.MyTask has no compatible constructor

Total time: 0 seconds
4

1 回答 1

4

在仍然输入问题的同时找到了解决方案。但也许这对其他人有用:

我只是忘记了public类声明中的限定符。因此,如下声明类非常有效:

package my.package;

// ...

// Mind the "public"!
public class MyTask extends Task
{
    // ...
}
于 2013-03-19T11:24:31.480 回答