Java: откуда загрузчик классов расширений получает классы в Java 13?

Во всей документации, которую мне удалось найти, упоминается папка jre/lib/ext, но ее нет в моей установке JRE 13.

Я предполагаю, что где-то между Java 8 (где я вижу банки в jre/lib/ext) и Java 13 они были перемещены, но я не смог точно определить, когда и как это было сделано.

Может ли кто-нибудь уточнить, что происходит с новыми JRE с точки зрения того, где в настоящее время находятся классы расширения?


person DraxDomax    schedule 30.09.2019    source источник


Ответы (1)


Механизм расширения исчез с Java 9, а не только перемещен [:-| , см. раздел Важные изменения и информация для Java. 9:

Устаревший механизм расширений был удален. Среда выполнения откажется запускаться, если ${java.home}/lib/ext существует или в командной строке указано системное свойство java.ext.dirs.

А также Изменения в установленных Изображение JDK/JRE в Руководство по переходу на JDK 9:

В предыдущих выпусках механизм расширения позволял среде выполнения находить и загружать классы расширения, не указывая их специально в пути к классам. В JDK 9, если вам нужно использовать классы расширения, убедитесь, что файлы JAR находятся в пути к классам.

person user85421    schedule 30.09.2019
comment
ха-ха, нравится подход полной меры, с которым они пошли. Не позволять запускать JRE, если кто-то даже думал об использовании расширений: D - person DraxDomax; 30.09.2019
comment
Лучше обнаружить проблему при запуске. Механизм расширения устарел во времена JDK 8. Параметр -XX:+CheckEndorsedAndExtDirs был параметром JDK 8 для быстрого обнаружения зависимости от механизма. - person Alan Bateman; 01.10.2019