首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么<JAVA_HOME>/jre/lib目录中的jar文件没有由引导类加载器加载

为什么<JAVA_HOME>/jre/lib目录中的jar文件没有由引导类加载器加载
EN

Stack Overflow用户
提问于 2016-04-17 11:20:49
回答 1查看 1.2K关注 0票数 0

有人说

引导类加载器加载位于<JAVA_HOME>/jre/lib目录中的核心Java库。

扩展类加载器将代码加载到扩展目录<JAVA_HOME>/jre/lib/ext或java.ext.dirs系统属性指定的任何其他目录中)。它由sun.misc.Launcher$ExtClassLoader类实现。

如果我的主程序是

代码语言:javascript
运行
AI代码解释
复制
public class TestSt {

    public static void main(String[] args) {

        System.out.println(String.class.getClassLoader());
        System.out.println(Student.class.getClassLoader());
        System.out.println(TestSt.class.getClassLoader());
    }

}

输出是

空 sun.misc.Launcher$AppClassLoader@73d16e93 sun.misc.Launcher$AppClassLoader@73d16e93

这很好。

现在,如果我将Student文件放在/jre/lib/ext中,输出是

空 sun.misc.Launcher$ExtClassLoader@3d4eac69 sun.misc.Launcher$AppClassLoader@2a139a55

这也很好。

,但我不明白如果我把学生jar文件放在

/jre/lib目录。为什么输出以的形式给出

空 sun.misc.Launcher$AppClassLoader@73d16e93 sun.misc.Launcher$AppClassLoader@73d16e93

我在想,在这种情况下,学生类应该从引导类加载器加载,为什么它是由应用程序类加载器加载的。我想我漏掉了什么。请让我知道我哪里错了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-17 11:42:24

只有少数几个目录可以自动加载所有的JAR。在诸如/jre/lib这样的目录中,只加载它希望加载的JAR。任何其他的罐子都需要通过类路径加载。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36681098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档