public static List<ClasspathEntry> findAllClasspathEntries(List<ClazzLoader> classLoaders) { List<ClasspathEntry> classpathEntries = new ArrayList<>(); if (classLoaders != null) { for (ClazzLoader classLoader : classLoaders) { classpathEntries.addAll(classLoader.getClasspathEntries()); } } return classpathEntries; } }
public JHades dumpClassloaderInfo() { System.out.println("\n>> jHades printClassLoaders >> Printing all classloader available info (from the class loader toString(), ordered from child to parent):\n"); List<ClazzLoader> classLoaders = scanner.findAllClassLoaders(); boolean notSupportedFound = false; for (ClazzLoader classLoader : classLoaders) { if (classLoader.isSupported()) { System.out.println("\n>>> Dumping available info for classloader " + classLoader.getName() + "\n"); System.out.println(classLoader.getDetails()); } else { notSupportedFound = true; System.out.println(classLoader.getName() + " - NOT SUPORTED"); } } endCommand(classLoaders.size() > 0); if (notSupportedFound) { System.out.println("Note: NOT SUPPORTED class loader means that any classes loaded by such a classloader will not be found on any jHades queries. \n"); } return this; }
public JHades printClassLoaderNames() { System.out.println("\n>> jHades printClassLoaders >> Printing classloader class names (ordered from child to parent):\n"); List<ClazzLoader> classLoaders = scanner.findAllClassLoaders(); boolean notSupportedFound = false; for (ClazzLoader classLoader : classLoaders) { if (classLoader.isSupported()) { System.out.println(classLoader.getName()); } else { notSupportedFound = true; System.out.println(classLoader.getName() + " - NOT SUPORTED"); } } endCommand(classLoaders.size() > 0); if (notSupportedFound) { System.out.println("Note: NOT SUPPORTED class loader means that any classes loaded by such a classloader will not be found on any jHades queries. \n"); } return this; }
public JHades printClasspath() { System.out.println("\n>> jHades printClasspath >> Printing all class folder and jars on the classpath:\n"); List<ClasspathEntry> classpathEntries = scanner.findAllClasspathEntries(); ClazzLoader clazzLoader = null; for (ClasspathEntry entry : classpathEntries) { if (entry.getClassLoader() != null && !entry.getClassLoader().equals(clazzLoader)) { System.out.println(); // line break between class loaders clazzLoader = entry.getClassLoader(); } System.out.println(entry.getClassLoaderName() + " - " + entry.getUrl()); } endCommand(classpathEntries.size() > 0); return this; }
protected void addClasspathEntry(ClasspathEntry newEntry) { classpathEntries.add(newEntry); if (newEntry.isJar()) { List<ClasspathEntry> manifestClasspath = newEntry.findManifestClasspathEntries(); for (ClasspathEntry manifestEntry : manifestClasspath) { addClasspathEntry(manifestEntry); } } }
public String getClassLoaderName() { return classLoader != null ? classLoader.getName() : null; }
public JHades printClassLoaderNames() { System.out.println("\n>> jHades printClassLoaders >> Printing classloader class names (ordered from child to parent):\n"); List<ClazzLoader> classLoaders = scanner.findAllClassLoaders(); boolean notSupportedFound = false; for (ClazzLoader classLoader : classLoaders) { if (classLoader.isSupported()) { System.out.println(classLoader.getName()); } else { notSupportedFound = true; System.out.println(classLoader.getName() + " - NOT SUPORTED"); } } endCommand(classLoaders.size() > 0); if (notSupportedFound) { System.out.println("Note: NOT SUPPORTED class loader means that any classes loaded by such a classloader will not be found on any jHades queries. \n"); } return this; }
public JHades printClasspath() { System.out.println("\n>> jHades printClasspath >> Printing all class folder and jars on the classpath:\n"); List<ClasspathEntry> classpathEntries = scanner.findAllClasspathEntries(); ClazzLoader clazzLoader = null; for (ClasspathEntry entry : classpathEntries) { if (entry.getClassLoader() != null && !entry.getClassLoader().equals(clazzLoader)) { System.out.println(); // line break between class loaders clazzLoader = entry.getClassLoader(); } System.out.println(entry.getClassLoaderName() + " - " + entry.getUrl()); } endCommand(classpathEntries.size() > 0); return this; }
protected void addClasspathEntry(ClasspathEntry newEntry) { classpathEntries.add(newEntry); if (newEntry.isJar()) { List<ClasspathEntry> manifestClasspath = newEntry.findManifestClasspathEntries(); for (ClasspathEntry manifestEntry : manifestClasspath) { addClasspathEntry(manifestEntry); } } }
public String getClassLoaderName() { return classLoader != null ? classLoader.getName() : null; }
public JHades dumpClassloaderInfo() { System.out.println("\n>> jHades printClassLoaders >> Printing all classloader available info (from the class loader toString(), ordered from child to parent):\n"); List<ClazzLoader> classLoaders = scanner.findAllClassLoaders(); boolean notSupportedFound = false; for (ClazzLoader classLoader : classLoaders) { if (classLoader.isSupported()) { System.out.println("\n>>> Dumping available info for classloader " + classLoader.getName() + "\n"); System.out.println(classLoader.getDetails()); } else { notSupportedFound = true; System.out.println(classLoader.getName() + " - NOT SUPORTED"); } } endCommand(classLoaders.size() > 0); if (notSupportedFound) { System.out.println("Note: NOT SUPPORTED class loader means that any classes loaded by such a classloader will not be found on any jHades queries. \n"); } return this; }
public JHades overlappingJarsReport() { System.out.println("\n>> jHades - scanning classpath for overlapping jars: \n"); List<JarPair> jarOverlapReportLines = scanner.findOverlappingJars(); for (JarPair jarOverlapReportLine : jarOverlapReportLines) { String reportLine = jarOverlapReportLine.getJar1().getUrl() + " overlaps with \n" + jarOverlapReportLine.getJar2().getUrl() + " - total overlapping classes: " + jarOverlapReportLine.getDupClassesTotal() + " - "; if (jarOverlapReportLine.getJar1().getClassLoader().equals(jarOverlapReportLine.getJar2().getClassLoader())) { reportLine += "same classloader ! This is an ERROR!\n"; } else { reportLine += "different classloaders.\n"; } System.out.println(reportLine); } endCommand(jarOverlapReportLines.size() > 0); return this; }
public static List<ClasspathEntry> findAllClasspathEntries(List<ClazzLoader> classLoaders) { List<ClasspathEntry> classpathEntries = new ArrayList<>(); if (classLoaders != null) { for (ClazzLoader classLoader : classLoaders) { classpathEntries.addAll(classLoader.getClasspathEntries()); } } return classpathEntries; } }
public JHades overlappingJarsReport() { System.out.println("\n>> jHades - scanning classpath for overlapping jars: \n"); List<JarPair> jarOverlapReportLines = scanner.findOverlappingJars(); for (JarPair jarOverlapReportLine : jarOverlapReportLines) { String reportLine = jarOverlapReportLine.getJar1().getUrl() + " overlaps with \n" + jarOverlapReportLine.getJar2().getUrl() + " - total overlapping classes: " + jarOverlapReportLine.getDupClassesTotal() + " - "; if (jarOverlapReportLine.getJar1().getClassLoader().equals(jarOverlapReportLine.getJar2().getClassLoader())) { reportLine += "same classloader ! This is an ERROR!\n"; } else { reportLine += "different classloaders.\n"; } System.out.println(reportLine); } endCommand(jarOverlapReportLines.size() > 0); return this; }