From 60e84957f8f26c6679266dd979b17f6daa62eeec Mon Sep 17 00:00:00 2001 From: Simon Kitching Date: Tue, 1 Aug 2006 23:45:58 +0000 Subject: [PATCH] When multiple jars on classpath match logical lib name, use jar with shortest name. Also remove debug print statement. git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@427797 13f79535-47bb-0310-9956-ffa450edef68 --- .../commons/logging/PathableClassLoader.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/test/org/apache/commons/logging/PathableClassLoader.java b/src/test/org/apache/commons/logging/PathableClassLoader.java index 17c5886..a74cf3d 100644 --- a/src/test/org/apache/commons/logging/PathableClassLoader.java +++ b/src/test/org/apache/commons/logging/PathableClassLoader.java @@ -245,6 +245,11 @@ public class PathableClassLoader extends URLClassLoader { * jarfile in the path whose name starts with the logicalLib string is * considered a match. For example, passing "foo" will match a url * of file:///some/where/foo-2.7.jar. + *

+ * When multiple classpath entries match the specified logicalLib string, + * the one with the shortest filename component is returned. This means that + * if "foo-1.1.jar" and "foobar-1.1.jar" are in the path, then a logicalLib + * name of "foo" will match the first entry above. */ private URL libFromClasspath(String logicalLib) { ClassLoader cl = this.getClass().getClassLoader(); @@ -254,6 +259,8 @@ public class PathableClassLoader extends URLClassLoader { URLClassLoader ucl = (URLClassLoader) cl; URL[] path = ucl.getURLs(); + URL shortestMatch = null; + int shortestMatchLen = Integer.MAX_VALUE; for(int i=0; i