diff --git a/src/main/org/apache/tools/ant/AntClassLoader.java b/src/main/org/apache/tools/ant/AntClassLoader.java index b7545346d..26464ca6a 100644 --- a/src/main/org/apache/tools/ant/AntClassLoader.java +++ b/src/main/org/apache/tools/ant/AntClassLoader.java @@ -1456,4 +1456,14 @@ public class AntClassLoader extends ClassLoader implements SubBuildListener { return "AntClassLoader[" + getClasspath() + "]"; } + /** + * Factory method + */ + public static AntClassLoader newAntClassLoader(ClassLoader parent, + Project project, + Path path, + boolean parentFirst) { + return new AntClassLoader(parent, project, path, parentFirst); + } + } \ No newline at end of file diff --git a/src/main/org/apache/tools/ant/Project.java b/src/main/org/apache/tools/ant/Project.java index b218b6f1d..52c9746a2 100644 --- a/src/main/org/apache/tools/ant/Project.java +++ b/src/main/org/apache/tools/ant/Project.java @@ -335,8 +335,8 @@ public class Project implements ResourceFactory { * @return an appropriate classloader. */ public AntClassLoader createClassLoader(Path path) { - return new AntClassLoader( - getClass().getClassLoader(), this, path); + return AntClassLoader + .newAntClassLoader(getClass().getClassLoader(), this, path, true); } /** @@ -350,7 +350,7 @@ public class Project implements ResourceFactory { */ public AntClassLoader createClassLoader( ClassLoader parent, Path path) { - return new AntClassLoader(parent, this, path); + return AntClassLoader.newAntClassLoader(parent, this, path, true); } /** diff --git a/src/main/org/apache/tools/ant/taskdefs/Classloader.java b/src/main/org/apache/tools/ant/taskdefs/Classloader.java index b977f48c7..19d8e5a7e 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Classloader.java +++ b/src/main/org/apache/tools/ant/taskdefs/Classloader.java @@ -210,7 +210,7 @@ public class Classloader extends Task { + parent + " " + parentFirst, Project.MSG_DEBUG); // The param is "parentFirst" - acl = new AntClassLoader((ClassLoader) parent, + acl = AntClassLoader.newAntClassLoader((ClassLoader) parent, getProject(), classpath, parentFirst); getProject().addReference(loaderName, acl); diff --git a/src/main/org/apache/tools/ant/taskdefs/WhichResource.java b/src/main/org/apache/tools/ant/taskdefs/WhichResource.java index e24819ba4..e666914d4 100644 --- a/src/main/org/apache/tools/ant/taskdefs/WhichResource.java +++ b/src/main/org/apache/tools/ant/taskdefs/WhichResource.java @@ -135,7 +135,7 @@ public class WhichResource extends Task { getProject().log("using system classpath: " + classpath, Project.MSG_DEBUG); } AntClassLoader loader; - loader = new AntClassLoader(getProject().getCoreLoader(), + loader = AntClassLoader.newAntClassLoader(getProject().getCoreLoader(), getProject(), classpath, false); String loc = null; diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java b/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java index 9df3d910e..22d25b544 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JavaCC.java @@ -411,8 +411,11 @@ public class JavaCC extends Task { String packagePrefix = null; String mainClass = null; - AntClassLoader l = new AntClassLoader(); - l.setClassPath(path.concatSystemClasspath("ignore")); + AntClassLoader l = + AntClassLoader.newAntClassLoader(null, null, + path + .concatSystemClasspath("ignore"), + true); String javaccClass = COM_PACKAGE + COM_JAVACC_CLASS; InputStream is = l.getResourceAsStream(javaccClass.replace('.', '/') + ".class"); diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java index 07c7b7983..46f13ac2a 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java @@ -1131,8 +1131,9 @@ public class JUnitTask extends Task { if (!cmd.haveClasspath()) { return; } - AntClassLoader loader = new AntClassLoader( - getProject(), cmd.createClasspath(getProject())); + AntClassLoader loader = AntClassLoader.newAntClassLoader(null, + getProject(), cmd.createClasspath(getProject()), + true); String projectResourceName = LoaderUtils.classNameToResource( Project.class.getName()); URL previous = null;