Существует способ определить все загруженные в настоящий момент нативные библиотеки, если вы это имели в виду. Уже выгруженные библиотеки не могут быть определены.
Основываясь на работе Светлина Накова ( Извлечение классов, загруженных в JVM в один JAR ), я сделал POC, который дает вам имена загруженных собственных библиотек из загрузчика классов приложения и загрузчика классов текущего класс.
Во-первых, упрощенная версия без бу .... это обработка исключений, хорошие сообщения об ошибках, Javadoc, ....
Получить приватное поле, в котором загрузчик классов сохраняет уже загруженные библиотеки с помощью отражения
public class ClassScope {
private static final java.lang.reflect.Field LIBRARIES;
static {
LIBRARIES = ClassLoader.class.getDeclaredField("loadedLibraryNames");
LIBRARIES.setAccessible(true);
}
public static String[] getLoadedLibraries(final ClassLoader loader) {
final Vector<String> libraries = (Vector<String>) LIBRARIES.get(loader);
return libraries.toArray(new String[] {});
}
}
Позвоните выше, как это
final String[] libraries = ClassScope.getLoadedClasses(ClassLoader.getSystemClassLoader()); //MyClassName.class.getClassLoader()
И вуаля libraries
содержит имена загруженных собственных библиотек.
Получить полный исходный код можно по здесь