Какие серверы приложений поддерживают несколько версий JAR-файлов в WAR-файлах (если есть)? - PullRequest
0 голосов
/ 14 ноября 2018

Начиная с Java 9, существуют несколько выпусков JAR ( MRJARS ), которые позволяют включать в один файл JAR разные классы для разных версий Java. Я был удивлен, когда Wildfly 14, работающий на Java 11, выполнял код Java-8 в JAR, включенном в WAR, хотя JAR был MRJAR с кодом для Java 11. Этот JAR, включенный в качестве зависимости для обычного проекта Java SE, работает различный код в зависимости от выполняющейся JRE, но при включении в WAR-код Java-11, похоже, игнорируется.

Является ли это ожидаемым поведением для веб-сервера, поскольку Java EE 8 явно не требует Java 9 (которая представила MRJAR), а только Java 8? Существуют ли другие веб-серверы, которые правильно читают MRJAR при запуске на более новой версии Java? Или MRJAR - это просто функция для Java SE?

Если я правильно понимаю документацию Wildfly , все содержимое WAR загружается одним и тем же загрузчиком классов (org.jboss.modules.ModuleClassLoader в соответствии с моим отладчиком), так что, возможно, этот загрузчик классов не исправляет ошибки читать включенные файлы JAR?

1 Ответ

0 голосов
/ 08 февраля 2019

Что ж, мой отчет об ошибках привел к исправлению, так что теперь Wildfly поддерживает MRJAR в развернутых WAR :)

...