Как получить список зависимостей классов Java для основного класса? - PullRequest
9 голосов
/ 14 октября 2008

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

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

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

Ответы [ 5 ]

5 голосов
/ 14 октября 2008

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

4 голосов
/ 14 октября 2008

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

1 голос
/ 23 апреля 2018

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

1 голос
/ 14 октября 2008

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

0 голосов
/ 17 апреля 2018

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

ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader) cl).getURLs();
for(URL url: urls){
    System.out.println(url.getPath());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...