Мне было интересно, есть ли способ выбрать разные версии одной и той же банки во время выполнения. Я надеюсь избежать использования профилей maven, так как это будет выбор во время сборки.
Допустим, есть две версии одной и той же банки:
greatFeature_version_A.jar
greatFeature_version_B.jar
Моя первоначальная идея состояла в том, чтобы использовать JMX для создания базового переключателя времени выполнения, выбирающего между этими двумя банками, которые оба включены в путь к классам. Кроме того, содержимое двух банок одинаково (без версий или разных имен внутренних классов).
Поэтому, когда запрашивается класс, скажем, из версии_A, загрузчик классов всегда будет выбирать первый найденный, независимо от того, к какой банке он принадлежит.
Я думаю, что таким образом невозможно добиться эффективного переключения во время выполнения. Мне было интересно, может ли кто-нибудь испытать что-то подобное и порекомендовать обходной путь. Я также надеюсь избежать написания собственного загрузчика классов, если это возможно.
Большое спасибо!
P.S. Другие связанные вопросы по SO указывают на пользовательские загрузчики классов, например this один.