I had the following situation: I wanted to access a property indirecly (another property hold the name of the property I wanted to access) => something like ${${someProperty}} I coded project.setProperty(getName(), project.getProperty(someProperty)) By a fault in my buildscript, content of someProperty was ' element' instead of 'element' (and ' element' was not a used property) the result of this was the followin exception (evalProperty is the task containing the code above): BUILD FAILED java.lang.NullPointerException at java.util.Hashtable.put(Hashtable.java:375) at org.apache.tools.ant.Project.setProperty(Project.java:433) at EvalProperty.execute(EvalProperty.java:51) at org.apache.tools.ant.Task.perform(Task.java:313) at org.apache.tools.ant.Target.execute(Target.java:309) at org.apache.tools.ant.Target.performTasks(Target.java:334) at org.apache.tools.ant.Project.executeTarget(Project.java:1216) at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:357) at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:144) at ForEach_2.execute(ForEach_2.java:144) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:171) at org.apache.tools.ant.Task.perform(Task.java:313) at org.apache.tools.ant.Target.execute(Target.java:309) at org.apache.tools.ant.Target.performTasks(Target.java:334) at org.apache.tools.ant.Project.executeTarget(Project.java:1216) at org.apache.tools.ant.Project.executeTargets(Project.java:1160) at org.apache.tools.ant.Main.runBuild(Main.java:605) at org.apache.tools.ant.Main.start(Main.java:195) at org.apache.tools.ant.Main.main(Main.java:234) Total time: 1 second java.lang.NullPointerException at java.util.Hashtable.put(Hashtable.java:375) at org.apache.tools.ant.Project.setProperty(Project.java:433) at EvalProperty.execute(EvalProperty.java:51) at org.apache.tools.ant.Task.perform(Task.java:313) at org.apache.tools.ant.Target.execute(Target.java:309) at org.apache.tools.ant.Target.performTasks(Target.java:334) at org.apache.tools.ant.Project.executeTarget(Project.java:1216) at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:357) at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:144) at ForEach_2.execute(ForEach_2.java:144) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:171) at org.apache.tools.ant.Task.perform(Task.java:313) at org.apache.tools.ant.Target.execute(Target.java:309) at org.apache.tools.ant.Target.performTasks(Target.java:334) at org.apache.tools.ant.Project.executeTarget(Project.java:1216) at org.apache.tools.ant.Project.executeTargets(Project.java:1160) at org.apache.tools.ant.Main.runBuild(Main.java:605) at org.apache.tools.ant.Main.start(Main.java:195) at org.apache.tools.ant.Main.main(Main.java:234) C:\ProjekteAufgaben\AntTasks>
Agreed ... but you can easily handle it. After all, lots of other things also could cause NPEs. If this were caused by something in a build file, rather than code, that would be another matter. How about this? String value = project.getProperty(someProperty); if (value != null) { project.setProperty(getName(), value); }
OK, I can life with it (and I'll throw a corresponding buildexception) thanks for your advice