Как получить список зависимостей классов Java для основного класса?

StackOverflow https://stackoverflow.com/questions/200483

Вопрос

Есть ли способ найти все зависимости классов основного класса Java?

Я вручную просматривал импорт основного класса и его импорта, но затем понял, что, поскольку не нужно импортировать классы, находящиеся в одном пакете, я составил неполный список.

Мне нужно что-то, что будет рекурсивно находить зависимости (возможно, до определенной глубины).

Это было полезно?

Решение

Это можно легко сделать с помощью javac.Удалите файлы классов, а затем скомпилируйте основной класс.javac рекурсивно скомпилирует любые необходимые ему классы (при условии, что вы не скрываете частные классы/интерфейсы пакета в файлах со странными именами).Конечно, это не распространяется на рекурсивные хаки.

Другие советы

я только что нашел Анализатор зависимостей классов, скачайте, установите configure и через 10 минут у меня будет полный список зависимостей классов.

в интеллектуальная идея у тебя есть отличный матрица структуры зависимостей.вы можете прекрасно изучить зависимости на уровне пакета и класса.если вам нравится проще, у вас также есть средство просмотра зависимостей, но здесь вы можете видеть только зависимости первого порядка.

Возможно, вы захотите взглянуть на jdeps инструмент командной строки:

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jdeps.html

jdeps -cp <your cp> -v <path to your .class file>

Команда вернет список зависимостей для этого файла класса Java.Есть много других опций, которые вы можете использовать в своей команде, например -regex найти зависимости, соответствующие заданному шаблону

Вот фрагмент кода, который вы можете поместить в свой основной метод в Java для вывода путей ко всем зависимостям вашего приложения:

ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader) cl).getURLs();
for(URL url: urls){
    System.out.println(url.getPath());
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top