How to get classpath from classloader?

前端 未结 5 783
悲哀的现实
悲哀的现实 2020-12-04 11:59

I am using some third party code which when given a \'-classpath\' command line argument doesnt set the java.class.path, but instead just creates a classloader, adds all the

5条回答
  •  自闭症患者
    2020-12-04 12:52

    Drop this code into an empty jsp page to view classLoader hierarchy and associated jars loaded at each level.

    visit() method below could also be used on its own

    <%!
        public void visit(StringBuilder sb, int indent, ClassLoader classLoader) {
            if (indent > 20 || classLoader == null)
                return;
            String indentStr = new String(new char[indent]).replace("\0", "    ");
            sb.append("\n");
            sb.append(indentStr);
            sb.append(classLoader.getClass().getName());
            sb.append(":");
            if (classLoader instanceof java.net.URLClassLoader) {
                java.net.URL[] urls = ((java.net.URLClassLoader)classLoader).getURLs();
                for (java.net.URL url : urls) {
                    sb.append("\n");
                    sb.append(indentStr);
                    sb.append(url);
                }
            }
            sb.append("\n");
            visit(sb, indent + 1, classLoader.getParent());
        }
    
    %>
    
    <%
    StringBuilder sb = new StringBuilder();
    visit(sb,1,this.getClass().getClassLoader());
    %>
    
    <%=sb%>
    

提交回复
热议问题