On 9/11/2014 9:28 PM, Arne Vajh??j wrote:
On 9/11/2014 9:15 PM, Knute Johnson wrote:
Is there a way given a program running from a .jar file to find the
other classes in the .jar file?
You can ask where a given class is loaded from and if it is a jar
file then you can list the content of the jar file.
Something like:
import java.io.IOException;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
public class Available {
private static String getLocation(Class<?> clz) {
return
clz.getProtectionDomain().getCodeSource().getLocation().getPath();
}
public static void main(String[] args) throws IOException {
String jarnam = getLocation(Available.class);
System.out.println(jarnam);
JarFile jarf = new JarFile(jarnam);
Enumeration<JarEntry> e = jarf.entries();
while(e.hasMoreElements()) {
JarEntry je = e.nextElement();
String clznam = je.getName().replace('/', '.');
if(clznam.endsWith(".class")) {
System.out.println(clznam);
}
}
jarf.close();
}
}
Arne
Thanks Arne, that's exactly what I was looking for. I did have a little
a space character in my path. Apparently getPath() returns a URL
encoded string but the URLDecoder fixed it right up.