2013-04-27 2 views
0

Я заметил, что при использовании JFreeChart размер программы МНОГО больше (около 1,5 МБ), чем стандартная Java-программа. Чтобы подтвердить, что это может быть, я просмотрел официальное руководство разработчика JFreeChart и заметил, что он составляет более 900 страниц! Это означает, что использование библиотеки JFreeChart в Java аналогично использованию system() в C++ (но гораздо безопаснее). Это похоже на сжигание вашей мебели на тепло, когда на стене есть хороший термостат. Я хотел знать, можно ли создать библиотеку MUCH SMALLER из библиотеки JFreeChart без необходимости включать все в библиотеку JFreeChart. Другими словами, могу ли я просто распаковать исполняемый JAR-файл, взять только те вещи, которые мне нужны для базовой диаграммы/диаграммы времени, и сделать из нее свою собственную библиотеку?Создание библиотеки из уже существующей библиотеки

+1

Вы можете легко использовать такой инструмент, как ProGuard, чтобы вырезать все, что вы не используете. –

+0

И, я предполагаю, что вы можете указать, что выбросить с помощью этой мощной программы тоже ... Когда я доберусь до своего компьютерного кода, я попробую это! –

+0

Можете ли вы сказать ProGuard о сохранении неиспользуемых объектов? // Я использую полиморфизм в своей программе; У меня есть мастер-класс, который запускает всю программу в своем конструкторе. –

ответ

1

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

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

+0

Это потребует изменения всех файлов .class во всех целевых библиотеках, используемых вашей программой, верно? –

+0

Я попытался распаковать исходную библиотеку JAR в папку, перейдя через папку, удалив все, что я не импортировал, перестроил JAR из того, что осталось (что я действительно включил), отбросил его на 'newLibrary.jar' и просто включив этот newLibrary.jar так же, как я включил оригинал. Проблема в том, что она не признает ЛЮБОЙ из импорта, который зависит от этой новой библиотеки! Что я могу делать неправильно? Нужно ли мне изменять файлы '.class', чтобы быть в безопасности? –

+1

Вы ошибаетесь. Вы должны сначала получить исходный код, который представляет собой сборник * .java-файлов, который вы, очевидно, можете получить [здесь] (http://sourceforge.net/p/jfreechart/code/HEAD/tree/). Затем вам нужно удалить файлы * .java, которые вам не нужны. Наконец, вам нужно скомпилировать эти файлы и упаковать их в банку. Скомпилированные файлы будут иметь расширение .class. Делать это не тривиальная задача, но это можно сделать. – herrtim

Смежные вопросы