java - 自定义 Ant 任务上的 "No compatible constructor"?

标签 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

最佳答案

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

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

package my.package;

// ...

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

关于java - 自定义 Ant 任务上的 "No compatible constructor"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15498141/

相关文章:

java - 如何用java读取txt文件的某些行?

java - [JAVA]递归删除扫雷中的空单元格

java - 关于 Java 数组

java - 将ant ivy项目中的jar导入到maven中

java - Ant 从(绝对)属性创建文件集、dirsets

java - 如何使用 ANT Build 排除特定的 java 文件夹和 java 文件

java - Ant 的包问题

java - 如何通过 HTTP 将 UTF-8 字符作为字符串发送

ant - <bool>标签处的其他选项

java - OpenSAML 3 解码器为空