当前位置: 首页 > 知识库问答 >
问题:

为什么/jre/lib目录中的jar文件没有被bootstrap类加载器加载

勾安翔
2023-03-14

据说

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

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());
    }

}

null
sun.misc.launcher$AppClassLoader@73d16e93 sun.misc.launcher$AppClassLoader@73d16e93

这很好。

现在,如果将Student Jar文件放入/jre/lib/ext中,输出为

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

共有1个答案

徐正雅
2023-03-14

只有几个目录自动加载所有的JAR。在/jre/lib等目录中,只加载它希望加载的JAR。任何其他JAR都需要通过类路径加载。

 类似资料:
  • 我构建的经典ear应用程序包含子模块EJB(进入jar)和WEB(进入war)。 我将我的ear(JAR WAR)部署到TomEE中,并使用Hibernate JPA提供程序。我得到以下错误: Hibernate jar进入ear/lib。还有hibernate-core-4.2.16。包含类org/hibernate/integrator/spi/integrator的Final。 所以我认为T

  • 这是我的路线文件。。。 “ProfileController”是这样的。。。 这是视图文件... 布局文件的头是这个。。。 当我转到url“localhost:8000/profile/username”时,会显示一个没有任何css网页的丑陋html。。。。当我从路由文件中删除“/{username}”并使其成为“/profile/username”并转到“localhost:8000/profi

  • 我已经重新启动了nginx和php7.4-fpm。 xdebug 3看起来是基于以下内容安装的: phpinfo()中的Ini目录: 加载的配置文件 /etc/php/7.4/fpm/php.ini扫描此目录以查找其他. ini文件 /etc/php/7.4/fpm/conf.d解析 /etc/php/7.4/fpm/conf.d/10-opcache.ini, /etc/php/7.4/fpm/

  • 我试图在程序中加载一个jar文件来调用不同的方法。我有一个类来完成这项工作,但是该类使用加载jar文件,它依赖于系统类加载程序,因此,例如,如果加载的jar执行它完成整个应用程序的执行,终止当前运行的Java虚拟机。我的意图是,如果加载的jar最后一次这样做,它只完成jar,而不是整个应用程序。此外,我希望能够关闭jar,以便在需要时可以稍后重新启动它。我使用以下代码从jar实例化所需的类,并从我

  • 返回文件的URL。 starfxdemodoc.fxml为: 而StarfXDemodocController.java是这样的: 有谁能帮我一下吗? 编辑/更新: 根据james_d的评论(谢谢你James,显然我已经盯着这个问题太久了……),我修复了控制器中的明显错误,并将SimNameField设置为TextField,而不是Label(并更新了上面的代码块以反映这一点)。我还将异常处理更改

  • 我正试图使用ProGuard混淆我的JAR文件。 明确地我有一个Java/Spring web应用程序。所以我制作了一个WAR文件。 我已将所有类从WAR文件的/WEB-INF/classes文件夹复制到一个新的JAR文件中。 我启动了ProGuard GUI,并选择了我的JAR文件作为输入。我指定了一个新的输出。JAR文件。我添加了所有的 /WEB-INF/lib/*. jar文件作为"库罐"。