首页 > 其他分享 >getClassLoader(),getResource()

getClassLoader(),getResource()

时间:2023-08-02 15:03:23浏览次数:35  
标签:getClassLoader name url ClassLoader getResource null 加载

在Java中,`getClassLoader()`方法是`java.lang.Class`类的一个方法,它用于获取加载某个类的类加载器对象。这个方法返回的是一个`ClassLoader`类的实例。

以下是`getClassLoader()`方法的源代码示例:

public ClassLoader getClassLoader() {
    ClassLoader cl = getClassLoader0();
    if (cl == null)
        return null;
    SecurityManager sm = System.getSecurityManager();
    if (sm != null) {
        ClassLoader.checkClassLoaderPermission(cl, Reflection.getCallerClass());
    }
    return cl;
}

 

需要注意的是,实际的类加载器实现是由Java虚拟机(JVM)提供的,并且可以根据不同的JVM实现而有所不同。因此,`getClassLoader()`方法的具体实现可能会因JVM的不同而有所不同。

此外,还需要了解的是`ClassLoader`类是一个抽象类,Java中提供了多种具体的类加载器实现,如`BootstrapClassLoader`、`ApplicationClassLoader`、`ExtClassLoader`等。

 

`getResource()`是Java中`ClassLoader`类提供的一个方法,用于获取给定资源的URL。它可以从类路径、文件系统、JAR文件或其他来源中获取资源。以下是简化版的`getResource()`方法的源代码示例:

public URL getResource(String name) {
    URL url = null;
    if (name != null) {
        url = this.findResource(name);
    }
    return url;
}

protected URL findResource(String name) {
    URL url = null;
    if (parent != null) {
        url = parent.getResource(name);
    }
    if (url == null) {
        url = findBootstrapResource(name);
    }
    if (url == null) {
        url = findResource(name);
    }
    return url;
}

protected URL findBootstrapResource(String name) {
    // Search for the resource in the bootstrap classloader
    // implementation-specific code goes here
}

需要注意的是,上述代码是一个简化版本的示例,实际的`ClassLoader`类实现可能会有更复杂的逻辑和错误处理。此外,实际的`ClassLoader`实现也可能会在不同的JVM版本和操作系统上有所差异。

`findResource()`方法会首先尝试从父类加载器中获取资源,如果父类加载器找不到资源,则会尝试在当前类加载器中查找。如果当前类加载器也找不到资源,则会尝试使用引导类加载器(Bootstrap ClassLoader)来查找资源。

`findBootstrapResource()`方法是一个抽象方法,它的具体实现取决于具体的类加载器实现。在此方法中,可以通过特定的机制来搜索引导类加载器所能访问到的资源。

 

标签:getClassLoader,name,url,ClassLoader,getResource,null,加载
From: https://www.cnblogs.com/luo9tian/p/17600660.html

相关文章

  • getResources().getDrawable()过时问题
    前言在Android的开发中我们经常会遇到过时的方法,当时为了图快、编译时也不会报错,也就没有去理会。随着慢慢整理代码,看到过时地方确实不美观,也会影响后期的兼容性问题,故特此记录下。本篇记录下关于getResources().getDrawable()过时问题。 问题我们经常会根据不同场景显示不同......
  • getResourceAsStream()返回值为null
    getResourceAsStream()返回值为nulljavaWeb项目,写文件下载的时候遇到getServletContext().getResourceAsStream("/store/"+filename)获取的值为null//获得读取本地文件的输入流in=getServletContext().getResourceAsStream("/store/"+filename);目录结构如下查......
  • Java中getResourceAsStream的用法,读取jar里面的文件
    首先,Java中的getResourceAsStream有以下几种:1.Class.getResourceAsStream(Stringpath):path不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。2.Class.getClassLoader.getRe......
  • getClassLoader
    类加载器(classloader)用来加载Java类到Java虚拟机中。一般来说,Java虚拟机使用Java类的方式如下:Java源程序(.java文件)在经过Java编译器编译之后就被转换成Java......
  • java getResource() 方法执行规律展示
    结论getClassLoader().getResource(Strings)读取的是当前项目的根目录;getResource(Strings)读取的时class类存在的目录getClassLoader().getResource(Strings)......
  • 打包后this.getResource(“”).getPath()获取不到对应的文件解决方法
    使用this.getClassLoader().getResource(“”).getPath();Java 在开发中经常需要获取资源文件路径,读写配置文件:this.getClass().getClassLoader().getResource(“路径”......
  • Java中getResourceAsStream方法返回null
    原因:我存放资源的文件并不是源根,所以我们的方法是无法访问到的。所以返回null指针!解决办法:鼠标右键点击要读取配置文件的文件夹将文件夹标记成ResourcesRoot就可以......
  • 带有getResource()示例的Spring Resource loader
    @AutowiredResourceLoaderresourceLoader;Resourceresource=resourceLoader.getResource("file:c:\\testing.txt");Resourceresource=resourceLoader.getReso......
  • getClassLoader()
    一、ClassLoader 的作用我们都知道java程序写好以后是以.java(文本文件)的文件存在磁盘上,然后,我们通过(bin/javac.exe)编译命令把.java文件编译成.class文件(字节码文件),并存......
  • getResourceAsStream()
    前言项目中经常会使用properties文件定义一些配置变量,相应的就需要写一个类来加载此配置。常用的方式是使用class或者classLoader对象的getResourceAsStream来加载p......