Вопрос по java – Как я могу определить ненужные банки, включенные в мой проект?

4

Я работаю в проекте Java, где используется библиотека оси 2 от Apache. Библиотека оси 2 состоит из около 20 jar-файлов, и некоторые из них не используются в проекте. Что я хочу знать, если есть метод, чтобы определить, какие из этих файлов JAR являются неиспользованными.

Я использую Eclipse IDE, и я подумал, что один из способов решения этой проблемы - добавить один jar за раз до тех пор, пока я не получу сообщения об ошибках отсутствующих классов. Однако я не уверен, будет ли это работать, так как некоторые из пропущенных классов появляются только во время выполнения.

Кто-нибудь знает лучший способ решить эту проблему?

Ваш Ответ

3   ответа
1

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

Class.forName(className);

Возможно, вы сможете определить имена классов, использованные для вышеперечисленного, но это маловероятно.

Поскольку классы будут запрашиваться / разрешаться во время выполнения, вы можете запустить свой (всеобъемлющий) набор тестов, чтобы определить, все ли еще работает. Но в конечном итоге я бы очень осторожно удалил банки из упаковки, такой как Axis. Я предполагаю, что они там с определенной целью. Является ли размер файла JAR действительно проблемой?

6

http://www.jboss.org/tattletale

JBoss Tattletale - это инструмент, который поможет вам получить обзор проекта, над которым вы работаете, или продукта, от которого вы зависите.

Инструмент предоставит вам отчеты, которые могут помочь вам

Identify dependencies between JAR files Spot if a class is located in multiple JAR files Spot if the same JAR file is located in multiple locations With a list of what each JAR file requires and provides
Зависимости времени выполнения относятся не только к рефлексивному коду, но также и к транзитивным зависимостям, т. Е. A зависит от B, зависит от C. Ваше приложение может скомпилироваться нормально, но при развертывании произойдет сбой, поскольку C там нет.
Похоже, что эту проблему решить сложнее, чем я ожидал. Alceu Costa
Ну, это так.
Что такое "зависимости класса времени выполнения"? Я думаю, нет, если вы имеете в виду отражение, Class.forName и прочее.
Я попробую tattletale. Кто-нибудь знает, может ли tattletales идентифицировать зависимости класса времени выполнения? Alceu Costa
1

пока она не скомпилируется.

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

Похожие вопросы