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 に答える