<%@ page import="java.util.List" %> <%@ page import="com.atlassian.confluence.util.ClasspathUtils" %> <%@ page import="java.util.Iterator" %> <%@ page import="java.net.URL" %> <%@ page import="java.util.Set" %> <%@ page import="com.atlassian.confluence.util.classpath.DuplicateClassFinder" %> <%@ page import="com.atlassian.confluence.util.classpath.ClasspathJarDuplicateClassFinder" %> <%@ page import="com.atlassian.confluence.util.classpath.JarSet" %> <%-- --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% if(!Boolean.getBoolean("com.atlassian.classpathjsp")){ %> Not enabled <%} else { %> Classpath JSP <% DuplicateClassFinder duplicateClassFinder = new ClasspathJarDuplicateClassFinder( ClasspathJarDuplicateClassFinder.EXCLUDE_KNOWN_DUPLICATES); %>
<% List classLoaders = ClasspathUtils.getThreadContentClassLoaderHierarchy(); Iterator it = classLoaders.iterator(); while (it.hasNext()) { ClassLoader classLoader = (ClassLoader) it.next(); out.println("
ClassLoader: " + classLoader + "
"); out.println("
"); out.println("
    "); List listUrls = ClasspathUtils.getClassLoaderClasspath(classLoader); for (Iterator iterator = listUrls.iterator(); iterator.hasNext();) { URL url = (URL) iterator.next(); out.println("
  1. " + url + "
  2. "); } out.println("
"); out.println("
"); } %>
<% Set jarSets = duplicateClassFinder.getJarSetsWithCommonClasses(); if(jarSets.isEmpty()) { %>
No duplicate class files found in classpath JARs
<% } else { %>
Duplicate class files found in classpath JARs

The following JARs have classes in common:

Packages with duplicates:

<% } } }%>