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