public class ClassLoaderUtil extends Object
ClassLoader: 记录了各个路径,并且集成加载类文件(.class),以及相关资源等行为特征的一个类,主要属性有 URL列表: 这个列表记录了到什么地方去找文件,会按顺序遍历寻找。这个路径必须是目录或JAR文件,不能是其他的 parent: 记录了上一层的ClassLoader,(JVM要求将所有的Classloader组织成一棵树),如果本处找不到类,会到上一Loader里去查找。
基础常识: JVM启动后,默认有三个持久化的Classloader(以后简称系统Loader):
功能说明: 初始化后,即初始化了两个基本的ClassLoader,一个是系统ClassLoader,一个是扩展ClassCloader。 我们要载入一个动态类,有两种方法,一种是将该类所在路径加入到系统Loader当中去。 二是自己定义一个CLassLoader,用完后GC会回收这个资源。
Constructor and Description |
---|
ClassLoaderUtil() |
Modifier and Type | Method and Description |
---|---|
static boolean |
addClassPath(File dirOrJar)
将一个目录或JAR包添加到classpath
|
static boolean |
addClassPath(File dirOrJar,
URLClassLoader loader)
在URLClassLoader动态地增加URL
|
static boolean |
addClassPath(String path)
将一个目录或JAR包添加到classpath
|
static void |
addUrl(URLClassLoader loader,
URL... urls)
添加路径
|
static URLClassLoader |
createURLClassLoader(File dirOrJar)
构造一个URLClassLoader
|
static URLClassLoader |
createURLClassLoader(URL url)
构造一个URLClassLoader
|
static void |
displayClassInfo(Class<?> clazz) |
static void |
displayClassInfo(Class<?> clazz,
StringBuffer results,
boolean showParentClassLoaders) |
static URLClassLoader |
getAppClassLoader()
得到系统的ClassLoader
|
static List<Class<?>> |
getClassesLoadedBy(ClassLoader cl)
得到由指定的ClassLoader所载入的所有类
|
static String |
getClassFilePath(Class<?> c)
从一个类得到这个类的class文件路径
|
static File[] |
getClasspath(ClassLoader cl) |
static File[] |
getClasspath(URLClassLoader cl)
得到指定的ClassLoader的路径
|
static File[] |
getClasspathFromDefaultClassLoader(ClassLoader loader)
对于RCP程序,其中ClassLoader是DefaultClassLoader,不是systemClassLoader 此方法用于在RCP中获取路径
|
static File[] |
getClasspathOfAppClassLoader() |
static URL |
getCodeSource(Class<?> c)
得到一个类被加载时的路径 一个ClassLoader可以包含多个URL,加载时类可以从其中任意一个位置被读入
|
ClassLoader |
getContextLoader()
得到当前线程的ContextClassLoader
|
static URLClassLoader |
getJvmExtClassLoader()
得到虚拟机扩展的ClassLoader
|
static URL[] |
getSystemClassPath()
得到本工程的classpath
|
public ClassLoader getContextLoader()
public static URLClassLoader getAppClassLoader()
public static URLClassLoader getJvmExtClassLoader()
public static List<Class<?>> getClassesLoadedBy(ClassLoader cl)
public static URLClassLoader createURLClassLoader(File dirOrJar)
dirOrJar
- public static URLClassLoader createURLClassLoader(URL url)
url
- public static URL[] getSystemClassPath()
public static File[] getClasspath(ClassLoader cl)
public static boolean addClassPath(String path)
path
- public static boolean addClassPath(File dirOrJar)
dirOrJar
- public static void addUrl(URLClassLoader loader, URL... urls)
loader
- urls
- public static boolean addClassPath(File dirOrJar, URLClassLoader loader)
dirOrJar
- loader
- public static String getClassFilePath(Class<?> c)
c
- public static URL getCodeSource(Class<?> c)
c
- public static void displayClassInfo(Class<?> clazz)
public static void displayClassInfo(Class<?> clazz, StringBuffer results, boolean showParentClassLoaders)
public static File[] getClasspathFromDefaultClassLoader(ClassLoader loader)
loader
- public static File[] getClasspathOfAppClassLoader()
public static File[] getClasspath(URLClassLoader cl)
cl
- Copyright © 2020. All rights reserved.