in modules/vfs-class-loader/src/main/java/org/apache/accumulo/classloader/vfs/ClassPathPrinter.java [58:130]
public static void printClassPath(ClassLoader cl, Printer out, boolean debug) {
try {
ArrayList<ClassLoader> classloaders = new ArrayList<>();
while (cl != null) {
classloaders.add(cl);
cl = cl.getParent();
}
Collections.reverse(classloaders);
int level = 0;
for (ClassLoader classLoader : classloaders) {
level++;
if (debug && level > 1) {
out.print("\n");
}
if (!debug && level < 2) {
continue;
}
boolean sawFirst = false;
if (classLoader.getClass().getName().startsWith("jdk.internal")) {
if (debug) {
out.print("Level " + level + ": " + classLoader.getClass().getName()
+ " configuration not inspectable.\n");
}
} else if (classLoader instanceof URLClassLoader) {
if (debug) {
out.print("Level " + level + ": URL classpath, items are:\n");
}
for (URL u : ((URLClassLoader) classLoader).getURLs()) {
printJar(out, u.getFile(), debug, sawFirst);
sawFirst = true;
}
} else if (classLoader instanceof AccumuloVFSClassLoader) {
if (debug) {
out.print("Level " + level + ": ReloadingVFSClassLoader, classpath items are:\n");
}
@SuppressWarnings("resource")
AccumuloVFSClassLoader vcl = (AccumuloVFSClassLoader) classLoader;
ClassLoader delegate = vcl.getDelegateClassLoader();
if (delegate instanceof VFSClassLoaderWrapper) {
VFSClassLoaderWrapper wrapper = (VFSClassLoaderWrapper) delegate;
for (FileObject f : wrapper.getFileObjects()) {
printJar(out, f.getURL().getFile(), debug, sawFirst);
sawFirst = true;
}
}
} else if (classLoader instanceof VFSClassLoader) {
if (debug) {
out.print("Level " + level + ": VFSClassLoader, classpath items are:\n");
}
VFSClassLoader vcl = (VFSClassLoader) classLoader;
for (FileObject f : vcl.getFileObjects()) {
printJar(out, f.getURL().getFile(), debug, sawFirst);
sawFirst = true;
}
} else {
if (debug) {
out.print("Level " + level + ": Unknown classloader configuration "
+ classLoader.getClass() + "\n");
}
}
}
out.print("\n");
} catch (Throwable t) {
throw new RuntimeException(t);
}
}