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

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

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

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

5 ответов


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


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


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


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

ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader) cl).getURLs();
for(URL url: urls){
    System.out.println(url.getPath());
}

вы можете взглянуть на 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 чтобы найти зависимости, соответствующие заданному шаблону