Обрезка моего проекта Java - PullRequest
7 голосов
/ 17 июля 2011

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

Моя конечная цель - уменьшить размер проекта.Я должен соответствовать некоторым целевым размерам, и использование всей библиотеки jar 7 МБ не вариант.

Я хотел бы знать, есть ли способ сделать это, кроме ручной проверки зависимостей?

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

Я прошу прощения, если мой запрос повторяется или глупый вопрос.

Спасибо, Судипто

Ответы [ 2 ]

5 голосов
/ 17 июля 2011

К сожалению, вы не можете сделать это без (возможно) нарушения лицензии JFreeChart.

JFreeChart лицензируется в соответствии с общественной лицензией Lesser GNU, и один из принципов этой лицензии заключается в том, что конечный пользователь может свободно изменять или заменять лицензионное программное обеспечение, встроенное в ваше программное обеспечение.Если вы выбираете классы из JFreeChart и включаете их в свой JAR, вы затрудняете своим пользователям реализацию своего права на замену встроенных классов JFreeChart.Это, безусловно, противоречит духу LGPL.

Подробнее см. На странице GNU LGPL и Java .


Если вы хотите это сделатьВ случае с JFreeChart вам необходимо получить разрешение от правообладателя.Если ваш супервайзер действительно заинтересован в уменьшении размера загрузки, большое денежное пожертвование проекту JFreeChart может помочь им прийти к его образу мышления.(Отказ от ответственности - я не имею никакого отношения к проекту.)

4 голосов
/ 17 июля 2011

Это действительно может быть трудно определить, потому что пути выполнения приложения могут отличаться в зависимости от выполнения. Однако есть интерфейс Instrumentation , который может показать вам все классы, загруженные в данный момент JVM. Это должно дать вам представление о том, какие классы держать. Пока вы запустили все возможные результаты приложения.

Вообще говоря, это, конечно, плохая идея, но раз вы спросили ...

...