Какова лучшая практика для включения сторонних файлов банки в программе Java?

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

zerobot.jar (my file)
libs/pircbot.jar
libs/mysql-connector-java-5.1.10-bin.jar
libs/c3p0-0.9.1.2.jar

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

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

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

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

Таким образом, мой вопрос, как я должен делать это?

7
задан ZoFreX 13 March 2010 в 03:35
поделиться

4 ответа

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

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

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

5
ответ дан 7 December 2019 в 10:00
поделиться

Думаю, я собираюсь пойти по пути манифеста. Объявите путь к классам в манифесте для jar-файла и укажите записи для:

libs/pircbot.jar
libs/mysql-connector-java-5-bin.jar
libs/c3p0.jar

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

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

0
ответ дан 7 December 2019 в 10:00
поделиться

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

1
ответ дан 7 December 2019 в 10:00
поделиться

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

0
ответ дан 7 December 2019 в 10:00
поделиться
Другие вопросы по тегам:

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