Уменьшите внешний размер файла банки

Я разработал модуль для проекта Java. Модуль зависит от внешней библиотеки (fastutil). Проблема, fastutil.jar файл пару раз более тяжел, чем сам целый проект (14 МБ). Я только использую крошечное подмножество классов из библиотеки. Модуль теперь закончен, и никто, вероятно, не расширит его в будущем. Есть ли способ, которым я мог извлечь только соответствующий класс некоторым fastutil_small.jar так, чтобы другие не загружали весь этот дополнительный вес?

8
задан vaxquis 7 December 2014 в 15:52
поделиться

4 ответа

Инструменты обфускации, такие как ProGuard, обычно предоставляют функцию удаления неиспользуемых классов (и даже полей и методов) из jar-файла. Однако вам нужно быть внимательным и проверять, что все работает, потому что вы можете использовать reflecton для доступа к классам или методам, которые ProGuard не может проанализировать.

Вы можете использовать только эту функцию и уже получить некоторую экономию

Или вы можете комбинировать ее с другими техниками обфускации (такими как переименование классов и методов), чтобы сэкономить еще больше места ценой более трудной отладки (ваши трассировки стека будет труднее разобрать).

8
ответ дан 5 December 2019 в 11:23
поделиться

Из инструкций по установке fastutil:

Обратите внимание, что файл jar огромен из-за большого количества классов: если вы планируете поставлять свой собственный jar с некоторыми включенными классами fastutil, вам следует посмотреть AutoJar (также доступен на JPackage) для автоматического извлечения необходимых классов.

5
ответ дан 5 December 2019 в 11:23
поделиться

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

0
ответ дан 5 December 2019 в 11:23
поделиться

Поскольку fastutil - это программа с открытым исходным кодом под LGPL, вы можете просто скопировать соответствующие исходные файлы в свой проект и бросить туда jar-файл. Компилятор сообщит вам, есть ли у вас все необходимые файлы. Просто сохраните пакеты как они есть и положите сверху копию файла лицензии fastutil.

2
ответ дан 5 December 2019 в 11:23
поделиться
Другие вопросы по тегам:

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