Большая проблема с помещением вещей в каталог lib.ext заключается в том, что для разных приложений могут требоваться разные версии библиотек, и они могут конфликтовать друг с другом.
Подумайте о старом адском DLL из Windows 3 дня (если вы помните его), когда развивалась похожая ситуация, когда многие, если не большинство разработчиков программного обеспечения, помещали общие библиотеки в каталог Windows / System, потому что они автоматически выбирались оттуда вместо того, чтобы включать их в свои приложения и загружать их явно.
Вместо этого вам нужно иметь отдельный путь к классу для каждого приложения (поэтому нет пути к классу на уровне системы!), Установить его в сценарии запуска и указывать только те файлы JAR и каталоги классов, которые применимы для этого конкретного приложения.
Таким образом, несколько приложений с конфликтующими потребностями в библиотеках могут запускаться бок о бок, не мешая функциональности друг друга.
То же самое верно и в том случае, если вы разработчик, и вам не нужно, чтобы какие-либо внешние библиотеки мешали вашему приложению во время тестирования.
И есть еще одна вещь: если вы разрабатываете и используете трюк lib / ext (или путь к классу системного уровня), как вы можете быть уверены, что приложение, которое вы собираетесь отправить, поставляется с правильными библиотеками?
Если вы забудете включить его в свой установщик или установочный пакет, вы никогда не заметите, потому что он находится на вашей машине в общей папке. Но клиент, у которого нет такой библиотеки, получит ошибки во время выполнения и вскоре позвонит по телефону, требуя поддержки (и, возможно, возврата денег и предоставив вам плохие отзывы в прессе за доставку неисправного продукта).