diff --git a/WHATSNEW b/WHATSNEW index 4147b0a7a..81a78d7b4 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -153,6 +153,10 @@ Fixed bugs: * runant.py would swallow the first argument if CLASSPATH wasn't set. Bugzilla Report 49963. + * failed to load resources from jar files contained in a + directory that has a "!" in its name. + Bugzilla Report 50007. + Other changes: -------------- diff --git a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java index 681c39691..e5ff216fa 100644 --- a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java +++ b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java @@ -279,7 +279,7 @@ public class ProjectHelper2 extends ProjectHelper { uri = url.toString(); int pling = -1; if (uri.startsWith("jar:file") - && (pling = uri.indexOf("!")) > -1) { + && (pling = uri.indexOf("!/")) > -1) { zf = new ZipFile(org.apache.tools.ant.launch.Locator .fromJarURI(uri), "UTF-8"); inputStream = diff --git a/src/main/org/apache/tools/ant/launch/Locator.java b/src/main/org/apache/tools/ant/launch/Locator.java index 41abfe88a..eb3efe995 100644 --- a/src/main/org/apache/tools/ant/launch/Locator.java +++ b/src/main/org/apache/tools/ant/launch/Locator.java @@ -281,7 +281,7 @@ public final class Locator { * @since Ant1.7.1 */ public static String fromJarURI(String uri) { - int pling = uri.indexOf('!'); + int pling = uri.indexOf("!/"); String jarName = uri.substring("jar:".length(), pling); return fromURI(jarName); } diff --git a/src/tests/antunit/taskdefs/taskdef-test.xml b/src/tests/antunit/taskdefs/taskdef-test.xml new file mode 100644 index 000000000..da5a83ae8 --- /dev/null +++ b/src/tests/antunit/taskdefs/taskdef-test.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + Hello + + + + + + + + + + + + Hello + + + + + + + + + + + + + Hello + + + + + + + + + + + Hello + + + + + + + + + + + Hello + + +