Как проверить зависимости между JAR-файлами?

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

В системе более 40 jar-библиотек, и большинство из них избыточны из-за старых версий и тестирования. Чтобы удалить один jar, я должен проверить, что он не импортирован в код, поэтому я искал в коде путь импорта jar (я использую IntelliJ IDE), убедился, что он не используется, и удалил его.

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

Проблема в том, как перед удалением банки убедиться, что она не используется другим классом jar/java?

Несмотря на то, что в jar-файлах есть скомпилированные классы, скомпилированные классы делают имеют путь импорта необходимых библиотек. Но я не могу искать их с помощью IntelliJ (не ищет внутри файлов jar).

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

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


person Saleh Al-Zaid    schedule 24.04.2009    source источник


Ответы (5)


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

http://www.jboss.org/tattletale

person Uri    schedule 24.04.2009
comment
+1 этот инструмент все еще очень новый, но дает полезную информацию. Он даже показывает вам зависимости между классами в файлах jar. Жаль, что это не работает с maven. - person Peter D; 24.04.2009
comment
Именно то, что мне нужно! Я протестировал его, и он предоставил мне классные отчеты о зависимостях jar и многом другом. Спасибо! - person Saleh Al-Zaid; 25.04.2009
comment
Рад, что смог помочь. Я думаю, что он использует GraphViz для визуализации графиков, есть способы немного настроить его, чтобы он выглядел еще лучше. - person Uri; 25.04.2009

JDepend проанализирует для вас зависимости для любого количества JAR-файлов, файлов классов и т. д. Связывание пакетов он сообщает об этих JAR-файлах, что должно быть тривиальным дополнительным шагом.

person Nick Veys    schedule 24.04.2009
comment
Я также тестировал JDepend, но он слишком сложен в просмотре зависимостей, чем jboss tattletale. Но имеет преимущество, он также показывает зависимости между классами, а не только банки. Спасибо - person Saleh Al-Zaid; 25.04.2009

почему вы не используете Maven для своего проекта? это очень поможет вам в управлении зависимостями.

person silmx    schedule 24.04.2009
comment
Плагин сайта Maven будет генерировать отчеты, включая зависимости. - person Chris Nava; 24.04.2009
comment
Подключаемый модуль Maven в NetBeans 6.7 включает графическое средство просмотра зависимостей для файлов JAR: wiki.netbeans.org/NewAndNoteworthyMilestone3NB67 - person mjn; 24.04.2009

Я также нашел JarAnalyzer, но, похоже, он больше не поддерживается.

person giraff    schedule 17.08.2011

Что ж, сейчас 2013 год, поэтому я не уверен, был ли этот инструмент хорош в 2009 году. Только что использовал его и обнаружил, что он полезен: Class Dependency Analyzer (CDA) (V1.14) http://www.dependency-analyzer.org/ Этот инструмент имеет графический пользовательский интерфейс (Swing?). После добавления lib jar и классов Java он покажет зависимости на уровне Class/Package/Container(jar). Он также может показать иждивенцев. Так что легко найти зависимость от банок и зависимых банок.

person Anderson Mao    schedule 26.09.2013