【问题标题】:Java: Where does the Extensions Class Loader get classes from in Java 13?Java:扩展类加载器从 Java 13 中的哪里获取类?
【发布时间】:2020-01-30 00:25:08
【问题描述】:

我能找到的所有文档都提到了“jre/lib/ext”文件夹,但在我的 JRE 13 安装中不存在这样的文件夹。

我猜想在 Java 8(我可以在 jre/lib/ext 中看到 jar)和 Java 13 之间的某个地方,它们移动了,但我无法确定它是何时以及如何完成的。

有人可以详细说明新 JRE 的情况吗?就扩展类当前所在的位置而言?

【问题讨论】:

    标签: java classloader dynamic-class-loaders classloading java-13


    【解决方案1】:

    Java 9 中没有了扩展机制,不仅移动了 [:-| ,请参阅 Java 9 的 Important Changes and Information

    已弃用的扩展机制已被删除。如果${java.home}/lib/ext 存在或在命令行中指定了系统属性java.ext.dirs,运行时将拒绝启动。

    还有JDK 9 Migration Guide中的Changes to the Installed JDK/JRE Image

    在以前的版本中,扩展机制使运行时环境可以查找和加载扩展类,而无需在类路径上专门命名它们。在 JDK 9 中,如果需要使用扩展类,请确保 JAR 文件位于类路径中。

    【讨论】:

    • 哈哈,喜欢他们采用的“全面测量”方法。如果有人甚至考虑使用扩展,则不要让 JRE 启动:D
    • 最好在启动时检测问题。扩展机制在 JDK 8 时间框架中已被弃用。 -XX:+CheckEndorsedAndExtDirs 选项是 JDK 8 中用于快速检测对机制的依赖项的选项。
    猜你喜欢
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    相关资源
    最近更新 更多