У меня есть программа, которой нужно несколько сторонних библиотек, и на данный момент она упакована так:
zerobot.jar (my file) libs/pircbot.jar libs/mysql-connector-java-5.1.10-bin.jar libs/c3p0-0.9.1.2.jar
Насколько я знаю, «лучший» способ обработки сторонних библиотек — это поместить их в путь к классам в манифесте моего файла jar, который будет работать кросс-платформенно, не замедлит запуск (что может быть связано с ними) и не сталкивается с юридическими проблемами (которые могут возникнуть при переупаковке).
Проблема для пользователей, которые сами предоставляют сторонние библиотеки (пример использования, обновление их для исправления ошибки). Две библиотеки имеют номер версии в файле, что добавляет хлопот.
Мое текущее решение заключается в том, что моя программа имеет процесс начальной загрузки, который создает новый загрузчик классов и создает экземпляр программы, используя его. Этот пользовательский загрузчик классов добавляет все файлы .jar в lib/ в свой путь к классам.
Мой текущий способ работает нормально, но теперь у меня есть два пользовательских загрузчика классов в моем приложении, и недавнее изменение кода вызвало проблемы, которые трудно отлаживать, поэтому, если есть лучший способ, я хотел бы устранить эту сложность. Это также похоже на чрезмерную инженерию, что, я уверен, является очень распространенной ситуацией.
Итак, мой вопрос в том, как я должен это делать?