@Override public int compare(JarPair line1, JarPair line2) { return -1 * line1.getDupClassesTotal().compareTo(line2.getDupClassesTotal()); } };
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; }
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); } } }
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; }
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); } } }
String reportLine = getJarName(jarOverlapReportLine.getJar1().getUrl()) + " overlaps with " + getJarName(jarOverlapReportLine.getJar2().getUrl()) + " - total overlapping classes: " + jarOverlapReportLine.getDupClassesTotal(); System.out.println(reportLine); totalDupClasses += jarOverlapReportLine.getDupClassesTotal();
@Override public int compare(JarPair line1, JarPair line2) { return -1 * line1.getDupClassesTotal().compareTo(line2.getDupClassesTotal()); } };