![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| anonymouse |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 18.8.2004 Репутация: нет Всего: 1 |
Ситуация: Есть набор стандарнтых инструментов, которые писались и расширялись на протяжении времени. Этот набор вырос, и смысла в каждый из проектов вставлять библиотеку целиком нет смысла.
Проблема: Нужна выделить те классы в проекте, которые необходимы для данного проекта, а все ненужные удалить. Есстесно процесс должен быть автоматизирован. Вопрос: Есть ли уже готовые средства, и если нет, то присоветуйте как бы это красиво организовать ? --------------------
Много чего интересного... |
|||
|
||||
| redrick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 547 Регистрация: 7.1.2004 Где: Москва Репутация: 3 Всего: 5 |
возникала у меня такая же проблема - самое дельное, что посоветовали - запустить с каким-то ключем, чтобы протрейсить загрузку классов. А вообще - в IDEA как минимум 4.5 где то вроде была галочка Import... Извиняюсь за размытость - не помню просто.... Может она за это и отвечает - типа будут ли включаться используемые классы в результирующий пакет или нет.
-------------------- Имею Мнение Хрен Оспоришь |
|||
|
||||
| anonymouse |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 18.8.2004 Репутация: нет Всего: 1 |
имеешь ввиду с ключем для javac.exe Хотелось бы поподробнее, не нашел ничего подходяшего
скорее всего тогда - Export , но с IDEA я не работал. У кого то есть еще идеи, пожелания ? --------------------
Много чего интересного... |
||||
|
|||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Один из вариантов: запустить
java -verbose:class myapp На консоль будут выведены загружаемые классы. -------------------- |
|||
|
||||
| anonymouse |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 18.8.2004 Репутация: нет Всего: 1 |
На этапе исполнения не подходит. Точно также я мог просто ClassLoader подправить.
Проблема в том что мне тогда придеться проект полностью протестировать, и я никогда не буду уверен в том что какой нить класс не будет грузиться позже (у клиента) Нужно делать полную трассировку по всем классам и даже методам. Чесно говоря я надеялся может кто плагин для Eclipse такой напишет. --------------------
Много чего интересного... |
|||
|
||||
| anonymouse |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 18.8.2004 Репутация: нет Всего: 1 |
Неужели больше нет идей ?
Я так понимаю раз ответов нет, то никому этим заниматься не приходилось. Неужели все собирают версии с мусором или никто вопрос не понял --------------------
Много чего интересного... |
|||
|
||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
Лично я не пробовал но идея такая, просто провести reverse ingeneering и посмотреть что на что ссылается.
-------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| redrick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 547 Регистрация: 7.1.2004 Где: Москва Репутация: 3 Всего: 5 |
3,14
это самый очевидный и геморойный способ. Более того - речь идет о своем проекте, т. е. у вас даже исходник есть на руках, не нужно ничего реверсить-инженерить. Трабла в том, что запаришься лазить по имортам и смотреть что где юзается. anonymouse (навеяно предидущим постом) а что собственно ? берем скармливаем Perl, или еще какому скрипту наши сорсы - получаем список нужных пакетов/классов. Это имхо нетрудно - объявления синтаксически идентифицируются. А потомнатравливаем скрипт на папку с распакованными пакетами, которые используются в проекте - в результате копим что нужно. Потом - понятно, что все, что в JRE импотрить не надо Вообще странно, - наверняка кто то уже такое делал... Вообще с Антом работали ? -------------------- Имею Мнение Хрен Оспоришь |
|||
|
||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
А что по твоему такое реверс инджинеринг, декомпиляция? Реверс инджинеринг и работает с исходниками. Используй Rational Rose он те запросто набрасает диаграму, что что инклюдит, ИМХО удобней перлового скрипта -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| Zandr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: 9 Всего: 13 |
1) в Idea есть Tools -> Optimize Imports - убивает все ненужные import ***
2) рекурсивно от main класса по всем методам пройтись, получить список нужных классов 3) Кто тебе дал гарантию, что где-нить в проекте нет чего-нить такого:
Или другого пользования рефлекшенов... Просто интересно как ты будешь такие вещи выцеплять |
|||
|
||||
| redrick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 547 Регистрация: 7.1.2004 Где: Москва Репутация: 3 Всего: 5 |
ну вообще да... тяжко =)) но наверно можно все таки - компилятор понимает, значит и скрипт сможет, если постараться. Только вот сказать легко, сделать ясен пень сложнее %)
-------------------- Имею Мнение Хрен Оспоришь |
|||
|
||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
Согласен с Zandr, неужели столь велика необходимость разбивать библиотеку, что можно пойти на подобный риск?
Вообще выцепить такие вещи моно чем-нить типа
но не факт что в коде не останеться что-нить эдакого. -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| anonymouse |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 18.8.2004 Репутация: нет Всего: 1 |
Пардон за молчание. Второй сын родился, сами понимаете...
О Class.forName я сразу подумал. Да и не жду я для всех вариантов работающий алгоритм, обфускатору тоже надо мозги поправлять. Просто я думал что существуют уже готовые тулсы (плагины). Например есть плагин который показывает всех кто использует выбранный метод. Т.е. выбираешь метод, а тебе выводяться классы которые этот метод вызывают. Для данной задачи помоему не надо больше. Т.е. таким же образом можно было бы посмотреть какие классы вызываються из других. Компилятор это очень хорошо знает, ведь он компилярит только изменившиеся классы и зависимые от них классы. Мне кажется что если сейчас такого нет то в ближайшее время обязательно должно появиться. --------------------
Много чего интересного... |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Поздравляю -------------------- |
|||
|
||||
| rni |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 10.3.2004 Репутация: 1 Всего: 3 |
Я использовал OPtimizer для Jbuilder. Там выводится список всех классов можно отфильтровать по имени пакета или класса также там пишется процент использования и если вижу CLASS NOT LOADED - первый признак мусора.
Конечно это не гарантирует, что в дальнейшем класс не будет загружен, но в своём коде разобраться и понять можно. --------------------
r-xr-xr-x 3 мусорных ведра корня 14312 9 января 2000 perl |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |