Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
// The classes loaded by this class loader. The only purpose of this table
// is to keep the classes from being GC'ed until the loader is GC'ed.
private final Vector<Class<?>> classes = new Vector<>();
// get access to the private variable ClassLoader.classes
Field fld = ClassLoader.class.getDeclaredField("classes");
fld.setAccessible(true);
// list classes loaded by the application class loader
ClassLoader appLoader = MyApp.class.getClassLoader();
Vector<Class<?>> classes = (Vector<Class<?>>) fld.get(appLoader);
Map<String, Class<?>> map = new HashMap<String, Class<?>>();
for (Class<?> cls : classes) {
System.out.println(cls);
}
// classes groupped by jar
Map<String, Collection<Class> > classesByJar = new HashMap<String, Collection<Class>>();
for(Class clz : loadedClasses){
String jarLocation = clz.getProtectionDomain().getCodeSource().getLocation().toString();
Collection<Class> jarClasses = classesByJar.get(jarLocation );
if(jarClasses == null) {
jarClasses = new ArrayList<Class>();
classesByJar.put(jarLocation, jarClasses);
}
jarClasses.add(clz);
}
Определяем все классы, которые использует приложение на Java