public JHades findClass(Class clazz) { if (clazz == null) { throw new IllegalArgumentException("Class name cannot be null."); } System.out.println(">> jHades searchClass >> Searching for class: " + clazz.getCanonicalName() + "\n"); ClasspathResource foundClass = scanner.findClass(clazz); for (ClasspathResourceVersion version : foundClass.getResourceFileVersions()) { System.out.println(version.getClasspathEntry().getUrl() + foundClass.getName() + " size = " + version.getFileSize()); } endCommand(foundClass != null); return this; }
private void findOverlappingJarsPairs(List<ClasspathResourceVersion> versions, Map<JarPair, JarPair> overlapPairs, int anchorIndex) { ClasspathResourceVersion anchor = versions.get(anchorIndex); for (int i = anchorIndex + 1; i < versions.size(); i++) { JarPair overlapPair = new JarPair( anchor.getClasspathEntry(), versions.get(i).getClasspathEntry()); if (!overlapPairs.containsKey(overlapPair)) { overlapPairs.put(overlapPair, overlapPair); } overlapPairs.get(overlapPair).incrementDupClassesTotal(); } if (anchorIndex + 1 < versions.size()) { findOverlappingJarsPairs(versions, overlapPairs, anchorIndex + 1); } } }
@Override public FileVisitResult visitFile(Path classpathResourceFile, BasicFileAttributes attrs) throws IOException { String resourceName = classpathResourceFile.toString(); logger.debug(getUrl() + " -" + resourceName); ClasspathResourceVersion classFileVersion = new ClasspathResourceVersion(ClasspathEntry.this, resourceName, attrs.size()); resourceVersions.add(classFileVersion); return CONTINUE; } });
public boolean hasDuplicates(boolean excludeSameSizeDups) { boolean hasDuplicates = false; if (!excludeSameSizeDups) { hasDuplicates = resourceFileVersions.size() > 1; } else if (resourceFileVersions.size() > 1) { // exclude resource files for which all versions have the same size boolean multipleSizesExist = false; long size = resourceFileVersions.get(0).getFileSize(); for (ClasspathResourceVersion resourceFileVersion : resourceFileVersions) { if (resourceFileVersion.getFileSize() != size) { multipleSizesExist = true; break; } } hasDuplicates = multipleSizesExist; } return hasDuplicates; } }
String resourceName = resourceVersion.getResourceName(); if (!resourcesPerNameMap.containsKey(resourceName)) { resourcesPerNameMap.put(resourceName, new ClasspathResource(resourceName, resourceVersion));
private void findOverlappingJarsPairs(List<ClasspathResourceVersion> versions, Map<JarPair, JarPair> overlapPairs, int anchorIndex) { ClasspathResourceVersion anchor = versions.get(anchorIndex); for (int i = anchorIndex + 1; i < versions.size(); i++) { JarPair overlapPair = new JarPair( anchor.getClasspathEntry(), versions.get(i).getClasspathEntry()); if (!overlapPairs.containsKey(overlapPair)) { overlapPairs.put(overlapPair, overlapPair); } overlapPairs.get(overlapPair).incrementDupClassesTotal(); } if (anchorIndex + 1 < versions.size()) { findOverlappingJarsPairs(versions, overlapPairs, anchorIndex + 1); } } }
@Override public FileVisitResult visitFile(Path classpathResourceFile, BasicFileAttributes attrs) throws IOException { String resourceName = classpathResourceFile.toString(); logger.debug(getUrl() + " -" + resourceName); ClasspathResourceVersion classFileVersion = new ClasspathResourceVersion(ClasspathEntry.this, resourceName, attrs.size()); resourceVersions.add(classFileVersion); return CONTINUE; } });
public boolean hasDuplicates(boolean excludeSameSizeDups) { boolean hasDuplicates = false; if (!excludeSameSizeDups) { hasDuplicates = resourceFileVersions.size() > 1; } else if (resourceFileVersions.size() > 1) { // exclude resource files for which all versions have the same size boolean multipleSizesExist = false; long size = resourceFileVersions.get(0).getFileSize(); for (ClasspathResourceVersion resourceFileVersion : resourceFileVersions) { if (resourceFileVersion.getFileSize() != size) { multipleSizesExist = true; break; } } hasDuplicates = multipleSizesExist; } return hasDuplicates; } }
String resourceName = resourceVersion.getResourceName(); if (!resourcesPerNameMap.containsKey(resourceName)) { resourcesPerNameMap.put(resourceName, new ClasspathResource(resourceName, resourceVersion));
public JHades findClass(Class clazz) { if (clazz == null) { throw new IllegalArgumentException("Class name cannot be null."); } System.out.println(">> jHades searchClass >> Searching for class: " + clazz.getCanonicalName() + "\n"); ClasspathResource foundClass = scanner.findClass(clazz); for (ClasspathResourceVersion version : foundClass.getResourceFileVersions()) { System.out.println(version.getClasspathEntry().getUrl() + foundClass.getName() + " size = " + version.getFileSize()); } endCommand(foundClass != null); return this; }
System.out.println(match.getName() + "\n"); for (ClasspathResourceVersion version : match.getResourceFileVersions()) { System.out.println(" " + version.getClasspathEntry().getUrl());
public void print() { System.out.println("\n>> jHades multipleClassVersionsReport >> Duplicate classpath resources report: \n"); ClasspathResources.sortByNumberOfVersionsDesc(resourcesWithDuplicates); for (ClasspathResource resource : resourcesWithDuplicates) { if (!resourcesToExclude.contains(resource.getName())) { System.out.println(resource.getName() + " has " + resource.getResourceFileVersions().size() + " versions on these classpath locations:\n"); for (ClasspathResourceVersion resourceFileVersion : resource.getResourceFileVersions()) { String classLoaderName = resourceFileVersion.getClasspathEntry().getClassLoaderName(); System.out.println(" " + (classLoaderName != null ? classLoaderName : "") + " - " + urlFormatter.formatUrl(resourceFileVersion.getClasspathEntry().getUrl()) + " - class file size = " + resourceFileVersion.getFileSize()); } System.out.println(); } } if (resourcesWithDuplicates.isEmpty()) { System.out.println("No duplicates where found.\n"); } } }
public void print() { System.out.println("\n>> jHades multipleClassVersionsReport >> Duplicate classpath resources report: \n"); ClasspathResources.sortByNumberOfVersionsDesc(resourcesWithDuplicates); for (ClasspathResource resource : resourcesWithDuplicates) { if (!resourcesToExclude.contains(resource.getName())) { System.out.println(resource.getName() + " has " + resource.getResourceFileVersions().size() + " versions on these classpath locations:\n"); for (ClasspathResourceVersion resourceFileVersion : resource.getResourceFileVersions()) { String classLoaderName = resourceFileVersion.getClasspathEntry().getClassLoaderName(); System.out.println(" " + (classLoaderName != null ? classLoaderName : "") + " - " + urlFormatter.formatUrl(resourceFileVersion.getClasspathEntry().getUrl()) + " - class file size = " + resourceFileVersion.getFileSize()); } System.out.println(); } } if (resourcesWithDuplicates.isEmpty()) { System.out.println("No duplicates where found.\n"); } } }