diff --git a/src/main/org/apache/tools/ant/AntClassLoader.java b/src/main/org/apache/tools/ant/AntClassLoader.java index e9cedf16b..99a4b0fc7 100644 --- a/src/main/org/apache/tools/ant/AntClassLoader.java +++ b/src/main/org/apache/tools/ant/AntClassLoader.java @@ -115,7 +115,7 @@ public class AntClassLoader extends ClassLoader { /** * Create a classloader for the given project using the classpath given. * - * @param project the project to ehich this classloader is to belong. + * @param project the project to which this classloader is to belong. * @param classpath the classpath to use to load the classes. */ public AntClassLoader(Project project, Path classpath, boolean systemFirst) { @@ -129,7 +129,7 @@ public class AntClassLoader extends ClassLoader { * * All subpackages are also included. * - * @param packageRoot the root of akll packages to be included. + * @param packageRoot the root of all packages to be included. */ public void addSystemPackageRoot(String packageRoot) { systemPackages.addElement(packageRoot + "."); diff --git a/src/main/org/apache/tools/ant/Project.java b/src/main/org/apache/tools/ant/Project.java index 20b25552a..8457a378a 100644 --- a/src/main/org/apache/tools/ant/Project.java +++ b/src/main/org/apache/tools/ant/Project.java @@ -452,10 +452,10 @@ public class Project { String msg = " +Task: " + taskType; log (msg, MSG_DEBUG); return task; - } catch (Exception e) { + } catch (Throwable t) { String msg = "Could not create task of type: " - + taskType + " due to " + e; - throw new BuildException(msg); + + taskType + " due to " + t; + throw new BuildException(msg, t); } } diff --git a/src/main/org/apache/tools/ant/taskdefs/Taskdef.java b/src/main/org/apache/tools/ant/taskdefs/Taskdef.java index 3f0361f1f..1c0b51ce8 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Taskdef.java +++ b/src/main/org/apache/tools/ant/taskdefs/Taskdef.java @@ -95,7 +95,14 @@ public class Taskdef extends Task { try { ClassLoader loader = null; if (classpath != null) { - loader = new AntClassLoader(project, classpath, false); + AntClassLoader al = new AntClassLoader(project, classpath, + false); + al.addSystemPackageRoot("org.apache.tools.ant"); + if (project.getJavaVersion().startsWith("1.1")) { + // JDK > 1.1 adds these by default + al.addSystemPackageRoot("java"); + } + loader = al; } else { loader = this.getClass().getClassLoader(); } @@ -110,7 +117,11 @@ public class Taskdef extends Task { } catch (ClassNotFoundException cnfe) { String msg = "taskdef class " + value + " cannot be found"; - throw new BuildException(msg, location); + throw new BuildException(msg, cnfe, location); + } catch (NoClassDefFoundError ncdfe) { + String msg = "taskdef class " + value + + " cannot be found"; + throw new BuildException(msg, ncdfe, location); } }