Skip to content

Instantly share code, notes, and snippets.

@whiter4bbit
Created October 25, 2013 00:15
Show Gist options
  • Save whiter4bbit/7147403 to your computer and use it in GitHub Desktop.
Save whiter4bbit/7147403 to your computer and use it in GitHub Desktop.
whiter4bbit@katrin jdk-bug-repr % touch resource
whiter4bbit@katrin jdk-bug-repr % jar cf jar-1.jar resource
whiter4bbit@katrin jdk-bug-repr % jar cf jar-2.jar resource
whiter4bbit@katrin jdk-bug-repr % jar cf jar-3.jar resource
whiter4bbit@katrin jdk-bug-repr % jar cf jar-4.jar resource
whiter4bbit@katrin jdk-bug-repr % jar i jar-1.jar jar-2.jar jar-3.jar jar-4.jar
whiter4bbit@katrin jdk-bug-repr % vim Bug.java
import java.net.URLClassLoader;
import java.net.URL;
import java.util.Enumeration;
import java.io.File;
public class Bug {
static void listResources(String...jars) throws Exception {
URL[] urls = new URL[jars.length];
for (int i=0;i<jars.length;i++) urls[i] = new File(jars[i]).toURL();
Enumeration<URL> res = new URLClassLoader(urls).getResources("resource");
while (res.hasMoreElements()) System.out.println(res.nextElement());
}
public static void main(String[] args) throws Exception {
System.out.println("Success:");
listResources("jar-2.jar", "jar-3.jar", "jar-4.jar", "jar-1.jar");
System.out.println("Failure:");
listResources("jar-1.jar", "jar-2.jar", "jar-3.jar", "jar-4.jar");
}
}
whiter4bbit@katrin jdk-bug-repr % mkdir classes
whiter4bbit@katrin jdk-bug-repr % javac -d classes Bug.java
Note: Bug.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
whiter4bbit@katrin jdk-bug-repr % java -cp classes Bug
Success:
jar:file:/home/whiter4bbit/tmp/jdk-bug-repr/jar-2.jar!/resource
jar:file:/home/whiter4bbit/tmp/jdk-bug-repr/jar-3.jar!/resource
jar:file:/home/whiter4bbit/tmp/jdk-bug-repr/jar-4.jar!/resource
jar:file:/home/whiter4bbit/tmp/jdk-bug-repr/jar-1.jar!/resource
Failure:
jar:file:/home/whiter4bbit/tmp/jdk-bug-repr/jar-1.jar!/resource
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment