diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java index e1851275c9..30db6b0bb7 100644 --- a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java +++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/Launcher.java @@ -1,48 +1,19 @@ package com.baeldung.loadedclasslisting; -import java.lang.reflect.Method; import java.util.Arrays; -import com.baeldung.loadedclasslisting.ListLoadedClassesAgent.ClassLoaderType; -import com.baeldung.loadedclasslisting.customLoader.ClassLoaderInfo; -import com.baeldung.loadedclasslisting.customLoader.CustomClassLoader; - public class Launcher { - private static ClassLoader customClassLoader; - public static void main(String[] args) { - printClassesLoadedBy(ClassLoaderType.BOOTSTRAP); - printClassesLoadedBy(ClassLoaderType.SYSTEM); - printClassesLoadedBy(ClassLoaderType.EXTENSION); - printClassesLoadedBy(ClassLoaderType.CUSTOM); + printClassesLoadedBy("BOOTSTRAP"); + printClassesLoadedBy("SYSTEM"); + printClassesLoadedBy("EXTENSION"); } - private static void printClassesLoadedBy(ClassLoaderType classLoaderType) { - Class[] classes; - if (classLoaderType.equals(ClassLoaderType.CUSTOM)) { - customClassLoader = customClassLoading(); - classes = ListLoadedClassesAgent.listLoadedClasses(customClassLoader); - } else { - classes = ListLoadedClassesAgent.listLoadedClasses(classLoaderType); - } + private static void printClassesLoadedBy(String classLoaderType) { + Class[] classes = ListLoadedClassesAgent.listLoadedClasses(classLoaderType); Arrays.asList(classes) .forEach(clazz -> System.out.println( classLoaderType + " ClassLoader : " + clazz.getCanonicalName())); } - - private static CustomClassLoader customClassLoading() { - CustomClassLoader customClassLoader = new CustomClassLoader(); - Class c; - try { - c = customClassLoader.findClass(ClassLoaderInfo.class.getName()); - Object ob = c.getDeclaredConstructor() - .newInstance(); - Method md = c.getMethod("printClassLoaders"); - md.invoke(ob); - } catch (Exception e) { - e.printStackTrace(); - } - return customClassLoader; - } } diff --git a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java index 8f4b8ebd41..337214a664 100644 --- a/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java +++ b/core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java @@ -4,17 +4,13 @@ import java.lang.instrument.Instrumentation; public class ListLoadedClassesAgent { - public enum ClassLoaderType { - SYSTEM, EXTENSION, BOOTSTRAP, CUSTOM , PLATFORM - } - private static Instrumentation instrumentation; public static void premain(String agentArgs, Instrumentation instrumentation) { ListLoadedClassesAgent.instrumentation = instrumentation; } - public static Class[] listLoadedClasses(ClassLoaderType classLoaderType) { + public static Class[] listLoadedClasses(String classLoaderType) { if (instrumentation == null) { throw new IllegalStateException( "ListLoadedClassesAgent is not initialized."); @@ -23,24 +19,18 @@ public class ListLoadedClassesAgent { getClassLoader(classLoaderType)); } - public static Class[] listLoadedClasses(ClassLoader classLoader) { - if (instrumentation == null) { - throw new IllegalStateException( - "ListLoadedClassesAgent is not initialized."); - } - return instrumentation.getInitiatedClasses(classLoader); - } - - private static ClassLoader getClassLoader(ClassLoaderType classLoaderType) { + private static ClassLoader getClassLoader(String classLoaderType) { ClassLoader classLoader = null; switch (classLoaderType) { - case SYSTEM: + case "SYSTEM": classLoader = ClassLoader.getSystemClassLoader(); break; - case EXTENSION: + case "EXTENSION": classLoader = ClassLoader.getSystemClassLoader().getParent(); break; - case BOOTSTRAP: + // passing a null value to the Instrumentation : getInitiatedClasses method + // defaults to the bootstrap class loader + case "BOOTSTRAP": break; default: break;