自定义Ant任务上的“没有兼容的构造函数”?

时间:2013-03-19 11:24:31

标签: java ant

我正在尝试为Apache Ant编写自定义任务(在this tutorial之后)。

目前,我的任务如下:

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

1 个答案:

答案 0 :(得分:4)

在键入问题时找到解决方案。但也许这对其他人有用:

我只是忘记了类声明中的public限定符。因此,如下所述声明该类是完美的:

package my.package;

// ...

// Mind the "public"!
public class MyTask extends Task
{
    // ...
}