Я анализирую зависимости большого java-проекта. Я нашел jdeps для анализа статических зависимостей. Он показывает большой график зависимостей. Однако многие jar-файлы не найдены, например, драйверы jdbc, потому что они загружаются с помощью «Class.forName()» в коде, а jdeps находит только статические зависимости.
Каков правильный способ анализа динамических зависимостей библиотек Java?
Будет ли это работать, даже если класс не используется во время теста? например Я начинаю ловить с -verbose:class, но не использую драйвер mysql jdbc во время теста. Будет ли по-прежнему перехватываться зависимость jdbc? Я спрашиваю, поскольку тщательный и 100% -ный тест невозможен.
Он улавливает любые классы, загруженные в среде, где вы собираете данные. Таким образом, отслеживание вывода JVM для модульных тестов не скажет вам, что загружено в рабочей среде. Вывод JVM для сервера тестирования разработки или интеграции может сообщить вам то, что вы хотите знать. Это зависит от вашего окружения. Это просто должно быть полное развертывание интересующих вас компонентов, даже если тестовая активность очень ограничена.




Вы можете поймать их с помощью JVM -verbose:class, который регистрирует каждый загруженный класс. Для разделения классов, загружаемых любым контейнером или сервером приложений, который вы используете, может потребоваться определенная работа. Но есть полные пути, так что можно получить полезную информацию.