Как лучше всего включать сторонние jar-файлы в Java-программу?

У меня есть программа, которой нужны несколько сторонних библиотек, и на данный момент она упакована примерно так:

zerobot.jar (мой файл)
ЛИЭС /pircbot.jar
LIBS /MySQL-разъем-Java-5.1.10-bin.jar
ЛИЭС /c3p0-0.9.1.2.jar

Насколько я знаю, «лучший» способ работы со сторонними библиотеками - это поместить их в classpath в манифесте моего jar-файла, который будет работать в кросс-платформенном режиме, не замедлит запуск (какой пакет они могут) и не сталкиваются с юридическими проблемами (которые могут перепаковывать).

Проблема для пользователей, которые сами поставляют сторонние библиотеки (пример использования, обновление для исправления ошибки). У двух из библиотек есть номер версии в файле, который добавляет хлопот.

Мое текущее решение состоит в том, что моя программа имеет процесс начальной загрузки, который создает новый загрузчик классов и создает экземпляр программы, правильно использующей его. Этот пользовательский загрузчик классов добавляет все файлы .jar из lib /в свой путь к классам.

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

Итак, мой вопрос: как мне это сделать?

7 голосов | спросил ZoFreX 13 MaramSat, 13 Mar 2010 06:35:01 +03002010-03-13T06:35:01+03:0006 2010, 06:35:01

4 ответа


0

Мы предоставляем файлы сценариев с банкой. Например. some.bat, some.sh и т. д.

Начиная с Java6, вы можете использовать подстановочный знак для указания путей к классам.

Вот хорошая статья, объясняющая этот подход: https://blogs.oracle.com /мр /запись /class_path_wildcards_in_mustang

ответил Enno Shioji 13 MaramSat, 13 Mar 2010 07:07:46 +03002010-03-13T07:07:46+03:0007 2010, 07:07:46
0

Если ваша аудитория техническая (и, похоже, они готовы добавить новые jar-файлы), возможно, вы могли бы предоставить файлы .sh и .bat, которые они могут редактировать, чтобы изменить путь к классам? Это будет более прозрачным для них, чем пользовательский загрузчик классов.

ответил Brian Slesinsky 15 MaramMon, 15 Mar 2010 01:21:04 +03002010-03-15T01:21:04+03:0001 2010, 01:21:04
0

Вы можете попробовать решение Fat-Jar, оно прекрасно работает с плагином Fat Jar Eclipse ». Я использовал для нескольких проектов без проблем на всех. Принцип этого, похоже, совпадает с вашим текущим решением.

ответил sysoutnull 13 MaramSat, 13 Mar 2010 07:05:07 +03002010-03-13T07:05:07+03:0007 2010, 07:05:07
0

Я думаю, что собираюсь пойти по пути манифеста. Объявите classpath в манифесте для jar записи и получите записи для:

ЛИЭС /pircbot.jar
LIBS /MySQL-разъем-Java-5-bin.jar
ЛИЭС /c3p0.jar

Затем, если пользователи захотят перейти на последние версии библиотеки, им придется переименовать их в соответствии с тем, что объявлено в манифесте. Я не думаю, что это слишком большая проблема, и это делает вещи намного проще внутренне.

Мне также просто не нравится идея автоматической загрузки всего в ./lib/, что кажется потенциально опасным.

ответил ZoFreX 14 MarpmSun, 14 Mar 2010 22:56:32 +03002010-03-14T22:56:32+03:0010 2010, 22:56:32

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132