public class ClassLoaderUtil extends Object
ClassLoader
工具类Constructor and Description |
---|
ClassLoaderUtil() |
Modifier and Type | Method and Description |
---|---|
static ClassLoader |
getClassLoader()
获取
ClassLoader 获取顺序如下: 1、获取当前线程的ContextClassLoader 2、获取当前类对应的ClassLoader 3、获取系统ClassLoader( ClassLoader.getSystemClassLoader() )
|
static ClassLoader |
getContextClassLoader()
获取当前线程的
ClassLoader |
static JarClassLoader |
getJarClassLoader(File jarOrDir)
创建新的
JarClassLoader ,并使用此Classloader加载目录下的class文件和jar文件 |
static ClassLoader |
getSystemClassLoader()
获取系统
ClassLoader |
static boolean |
isPresent(String className)
指定类是否被提供,使用默认ClassLoader
通过调用 loadClass(String, ClassLoader, boolean) 方法尝试加载指定类名的类,如果加载失败返回false加载失败的原因可能是此类不存在或其关联引用类不存在 |
static boolean |
isPresent(String className,
ClassLoader classLoader)
指定类是否被提供
通过调用 loadClass(String, ClassLoader, boolean) 方法尝试加载指定类名的类,如果加载失败返回false加载失败的原因可能是此类不存在或其关联引用类不存在 |
static Class<?> |
loadClass(File jarOrDir,
String name)
加载外部类
|
static Class<?> |
loadClass(String name)
加载类,通过传入类的字符串,返回其对应的类名,使用默认ClassLoader并初始化类(调用static模块内容和初始化static属性)
扩展 Class.forName(String, boolean, ClassLoader) 方法,支持以下几类类名的加载:
1、原始类型,例如:int
2、数组类型,例如:int[]、Long[]、String[]
3、内部类,例如:java.lang.Thread.State会被转为java.lang.Thread$State加载
|
static Class<?> |
loadClass(String name,
boolean isInitialized)
加载类,通过传入类的字符串,返回其对应的类名,使用默认ClassLoader
扩展 Class.forName(String, boolean, ClassLoader) 方法,支持以下几类类名的加载:
1、原始类型,例如:int
2、数组类型,例如:int[]、Long[]、String[]
3、内部类,例如:java.lang.Thread.State会被转为java.lang.Thread$State加载
|
static Class<?> |
loadClass(String name,
ClassLoader classLoader,
boolean isInitialized)
加载类,通过传入类的字符串,返回其对应的类名
此方法支持缓存,第一次被加载的类之后会读取缓存中的类 加载失败的原因可能是此类不存在或其关联引用类不存在 扩展 Class.forName(String, boolean, ClassLoader) 方法,支持以下几类类名的加载:
1、原始类型,例如:int
2、数组类型,例如:int[]、Long[]、String[]
3、内部类,例如:java.lang.Thread.State会被转为java.lang.Thread$State加载
|
static Class<?> |
loadPrimitiveClass(String name)
加载原始类型的类。
|
public static ClassLoader getContextClassLoader()
ClassLoader
Thread.getContextClassLoader()
public static ClassLoader getSystemClassLoader()
ClassLoader
ClassLoader
ClassLoader.getSystemClassLoader()
public static ClassLoader getClassLoader()
ClassLoader
1、获取当前线程的ContextClassLoader
2、获取当前类对应的ClassLoader
3、获取系统ClassLoader(ClassLoader.getSystemClassLoader()
)
public static Class<?> loadClass(String name) throws UtilException
Class.forName(String, boolean, ClassLoader)
方法,支持以下几类类名的加载:
1、原始类型,例如:int 2、数组类型,例如:int[]、Long[]、String[] 3、内部类,例如:java.lang.Thread.State会被转为java.lang.Thread$State加载
name
- 类名UtilException
- 包装ClassNotFoundException
,没有类名对应的类时抛出此异常public static Class<?> loadClass(String name, boolean isInitialized) throws UtilException
Class.forName(String, boolean, ClassLoader)
方法,支持以下几类类名的加载:
1、原始类型,例如:int 2、数组类型,例如:int[]、Long[]、String[] 3、内部类,例如:java.lang.Thread.State会被转为java.lang.Thread$State加载
name
- 类名isInitialized
- 是否初始化类(调用static模块内容和初始化static属性)UtilException
- 包装ClassNotFoundException
,没有类名对应的类时抛出此异常public static Class<?> loadClass(String name, ClassLoader classLoader, boolean isInitialized) throws UtilException
Class.forName(String, boolean, ClassLoader)
方法,支持以下几类类名的加载:
1、原始类型,例如:int 2、数组类型,例如:int[]、Long[]、String[] 3、内部类,例如:java.lang.Thread.State会被转为java.lang.Thread$State加载
name
- 类名classLoader
- ClassLoader
,null
则使用getClassLoader()
获取isInitialized
- 是否初始化类(调用static模块内容和初始化static属性)UtilException
- 包装ClassNotFoundException
,没有类名对应的类时抛出此异常public static Class<?> loadPrimitiveClass(String name)
name
- 原始类型名,比如 intpublic static JarClassLoader getJarClassLoader(File jarOrDir)
JarClassLoader
,并使用此Classloader加载目录下的class文件和jar文件jarOrDir
- jar文件或者包含jar和class文件的目录JarClassLoader
public static Class<?> loadClass(File jarOrDir, String name)
jarOrDir
- jar文件或者包含jar和class文件的目录name
- 类名public static boolean isPresent(String className)
loadClass(String, ClassLoader, boolean)
方法尝试加载指定类名的类,如果加载失败返回falseclassName
- 类名public static boolean isPresent(String className, ClassLoader classLoader)
loadClass(String, ClassLoader, boolean)
方法尝试加载指定类名的类,如果加载失败返回falseclassName
- 类名classLoader
- ClassLoader
Copyright © 2024. All rights reserved.