Как проверить зависимости между файлами JAR? - PullRequest
28 голосов
/ 24 апреля 2009

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

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

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

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

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

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

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

Ответы [ 6 ]

21 голосов
/ 24 апреля 2009

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

http://www.jboss.org/tattletale

6 голосов
/ 24 апреля 2009

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

1 голос
/ 26 сентября 2013

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

1 голос
/ 17 августа 2011

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

1 голос
/ 24 апреля 2009

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

0 голосов
/ 24 апреля 2009

Существует также ClassDep из Jini SDK.

http://java.sun.com/products/jini/2.0/doc/api/com/sun/jini/tool/ClassDep.html

...