I did a little more digging into the exception. Line 206 in Ant.java is
this:
// Are we trying to call the target in which we are defined?
if (p1.getBaseDir().equals(project.getBaseDir()) &&
p1.getProperty("ant.file").equals(project.getProperty("ant.file")) &&
target.equals(this.getOwningTarget().getName())) {
throw new BuildException("ant task calling its own parent target");
}
I'm guessing, from looking at the surrounding code, that the p1.getBaseDir()
call is returning null. This suggests that something is not set up
correctly when calling the target from the <foreach> tag? My <project> has
a basedir attribute of ".".
I have tried embedding <echo> tags in the target called by foreach, but
nothing gets printed. I tried other tasks besides javac, and they crash
with the same error.
So, I am stumped. I am using Ant 1.3. Is that an issue?
Thanks,
-Mark
-----Original Message-----
From: Mark Womack
Sent: Monday, July 02, 2001 11:48 AM
To: '[EMAIL PROTECTED]'
Subject: Error with the foreach task
This is probably something obvious that I am missing. But I have defined
the following targets:
<taskdef name="foreach"
classname="org.apache.tools.ant.taskdefs.optional.ForeachTask"/>
<target name="build_experimental" depends="init, prepare_dirs">
<foreach target="build_experimental_dir" type="dir">
<param name="src.subdir">
<fileset dir="${build.java}" includes="*"/>
</param>
</foreach>
</target>
<target name="build_experimental_dir">
<javac srcdir="${build.java}"
destdir="${build.classes}"
includes="${src.subdir}/*.java"
classpath="${CLASSPATH}">
<patternset excludesfile="${build.java}/build_excludes" />
</javac>
</target>
Took me a while to figure out I needed to add the <taskdef>. But after
adding that, I still get the following error:
build_experimental:
BUILD FAILED
java.lang.NullPointerException
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:206)
at
org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:103)
at
org.apache.tools.ant.taskdefs.optional.ForeachTask.executeTarget(Fore
achTask.java:246)
at
org.apache.tools.ant.taskdefs.optional.ForeachTask.executeParameters(
ForeachTask.java:263)
at
org.apache.tools.ant.taskdefs.optional.ForeachTask.executeParameters(
ForeachTask.java:273)
at
org.apache.tools.ant.taskdefs.optional.ForeachTask.execute(ForeachTas
k.java:284)
at org.apache.tools.ant.Target.execute(Target.java:153)
at org.apache.tools.ant.Project.runTarget(Project.java:898)
at org.apache.tools.ant.Project.executeTarget(Project.java:536)
at org.apache.tools.ant.Project.executeTargets(Project.java:510)
at org.apache.tools.ant.Main.runBuild(Main.java:421)
at org.apache.tools.ant.Main.main(Main.java:149)
It is unclear to me what is causing the null pointer exception. Is there
something I can turn on in ant that will help me debug this? Does anyone
see an obvious problem with the task definitions or the way I am using
<foreach> that I am missing?
Thanks!
-Mark