Как узнать, какое приложение JAR не используется? - PullRequest
5 голосов
/ 03 марта 2010

В нашем приложении в процессе разработки было собрано много JAR-файлов. Как я могу отфильтровать те, которые больше не используются приложением? На какой-то простой способ?

Ответы [ 5 ]

3 голосов
/ 03 марта 2010

Если вы уверены, что можете использовать свое приложение так, чтобы оно использовало все файлы jar, вы можете создать простой сценарий perl:

while (<>) {
    $l{$1}++ if m/\s+from\s+(.+\.jar)/;
}

for $l (keys(%l)) {
    print "$l\n";
}

(давайте назовем его list_jars.pl) и передадим ему вывод подробного прогона:

java -verbose -jar YOUR_APP.jar | perl list_jars.pl

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

1 голос
/ 03 марта 2010

Я использовал стан . это анализатор структуры для Java, и он дал мне очень хорошие результаты.

Вы можете визуально увидеть, какие банки используются, а какие нет.

1 голос
/ 03 марта 2010

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

0 голосов
/ 03 марта 2010

Может быть, вы могли бы написать свой собственный ClassLoader, унаследованный от java.lang.ClassLoader, который регистрирует пути загруженных классов? Это все еще не решает проблему обеспечения полного охвата всех классов, загруженных во всех возможных путях кода, хотя

0 голосов
/ 03 марта 2010

Напишите скрипт, который удаляет их одного за другим из вашего пути сборки, компилирует проект и проверяет ошибки сборки. Скрипт соберет список неиспользованных банок. Должно быть легко писать на bash / python.

Это решение не может отслеживать зависимости времени выполнения на основе отражения (см. Мой комментарий ниже).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...