Ant扩展任务,抛出StackOverflowError异常在继承Task做扩展任务时用到了父类的Project实例中的log方法,与此同时也在使用其它Output流实例向命令行输出信息,这时就会出现StackOverflowError的问题,需要注意。
java.lang.StackOverflowError问题重现场景
Java源代码,负责定义一个Ant任务,注意Project实例的应用
/**
* 自定义Ant任务
* @author WangYanCheng
* @version 2011-10-20
*/
public class SimpleTask extends Task {
private Project project;
private List fileListArr = new ArrayList();
@Override
public void execute() throws BuildException {
String message = project.getProperty("ant.project.name");
project.log("Here is project " + message + ".", Project.MSG_ERR);
project.log("My location is " + getLocation());
for (Iterator iterator = fileListArr.iterator(); iterator.hasNext();) {
//project.log(iterator.next().path, Project.MSG_INFO);
System.out.println(iterator.next().path);
}
}
public void setProject(Project proj) {
this.project = proj;
}
public FileList createFileList() {
FileList fileList = new FileList();
fileListArr.add(fileList);
return fileList;
}
/**
* Nested Object
* @author WangYanCheng
* @version 2011-10-20
*/
public class FileList {
String path;
public FileList(){}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
}
}
Ant源代码,描述了Ant任务
<?xml version="1.0" encoding="UTF-8"?>
异常信息
Buildfile: D:\work\workspace\mywork\leanant\SimpleTask.xml
jar:
[jar] Building jar: D:\work\workspace\mywork\leanant\SimpleTask.jar
main:
Here is project SimpleTask.
My location is D:\work\workspace\mywork\leanant\SimpleTask.xml:9:
ABC
ABC
ABCABCABCABCABCABCABCABCABCABC
BUILD FAILED
D:\work\workspace\mywork\leanant\SimpleTask.xml:9: java.lang.StackOverflowError
Total time: 922 milliseconds