Class OpenClassLoader
java.lang.Object
cloud.opencode.base.classloader.OpenClassLoader
OpenClassLoader - ClassLoader Facade
OpenClassLoader - 类加载器门面
Unified entry point for class loader operations.
类加载器操作的统一入口。
Features | 主要功能:
- Get default/context classloader - 获取默认/上下文类加载器
- Create isolated classloader - 创建隔离类加载器
- Create hot-swap classloader - 创建热替换类加载器
- ClassLoader utilities - 类加载器工具
Usage Examples | 使用示例:
// Get default classloader
ClassLoader cl = OpenClassLoader.getDefaultClassLoader();
// Create isolated classloader
IsoClassLoader iso = OpenClassLoader.isolatedLoader()
.fromJar("/path/to/plugin.jar")
.addIsolatedPackage("com.plugin")
.build();
// Execute with specific classloader
String result = OpenClassLoader.withClassLoader(customLoader, () -> {
// Code runs with customLoader as context classloader
return "result";
});
Security | 安全性:
- Thread-safe: Yes - 线程安全: 是
- Null-safe: Yes - 空值安全: 是
- Since:
- JDK 25, opencode-base-classloader V1.0.0
- Author:
- Leon Soo www.LeonSoo.com
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionstatic Optional<ClassLoader> findDefiningClassLoader(String className) Find classloader that defines the class 查找定义类的类加载器static ClassLoadergetClassLoader(Class<?> clazz) Get classloader for specified class 获取指定类的类加载器static List<ClassLoader> getClassLoaderHierarchy(ClassLoader classLoader) Get classloader hierarchy 获取类加载器层次static ClassLoaderGet context classloader 获取上下文类加载器static ClassLoaderGet default classloader 获取默认类加载器static HotSwapClassLoaderCreate hot-swap classloader 创建热替换类加载器static HotSwapClassLoaderhotSwapLoader(ClassLoader parent) Create hot-swap classloader with parent 使用父加载器创建热替换类加载器static IsoClassLoader.BuilderCreate isolated classloader builder 创建隔离类加载器构建器static booleanisVisible(Class<?> clazz, ClassLoader classLoader) Check if class is visible (loadable) by classloader 检查类是否对类加载器可见(可加载)Load class safely (returns Optional) 安全加载类(返回 Optional)loadClass(String className, ClassLoader classLoader) Load class safely with specified classloader 使用指定类加载器安全加载类static ResourceClassLoaderresourceLoader(Path... resourcePaths) Create resource classloader 创建资源类加载器static voidwithClassLoader(ClassLoader classLoader, Runnable runnable) Execute operation with specified classloader as context classloader 使用指定类加载器作为上下文类加载器执行操作static <T> TwithClassLoader(ClassLoader classLoader, Supplier<T> supplier) Execute operation with specified classloader as context classloader 使用指定类加载器作为上下文类加载器执行操作
-
Method Details
-
getDefaultClassLoader
Get default classloader 获取默认类加载器Priority: Context ClassLoader > Class ClassLoader > System ClassLoader
优先级: 上下文类加载器 > 类的类加载器 > 系统类加载器
- Returns:
- default classloader | 默认类加载器
-
getContextClassLoader
Get context classloader 获取上下文类加载器- Returns:
- context classloader | 上下文类加载器
-
getClassLoader
Get classloader for specified class 获取指定类的类加载器- Parameters:
clazz- class | 类- Returns:
- classloader | 类加载器
-
isolatedLoader
Create isolated classloader builder 创建隔离类加载器构建器- Returns:
- builder | 构建器
-
hotSwapLoader
Create hot-swap classloader 创建热替换类加载器- Returns:
- hot-swap classloader | 热替换类加载器
-
hotSwapLoader
Create hot-swap classloader with parent 使用父加载器创建热替换类加载器- Parameters:
parent- parent classloader | 父类加载器- Returns:
- hot-swap classloader | 热替换类加载器
-
resourceLoader
Create resource classloader 创建资源类加载器- Parameters:
resourcePaths- resource paths | 资源路径- Returns:
- resource classloader | 资源类加载器
-
withClassLoader
Execute operation with specified classloader as context classloader 使用指定类加载器作为上下文类加载器执行操作- Type Parameters:
T- return type | 返回类型- Parameters:
classLoader- classloader to use | 要使用的类加载器supplier- operation to execute | 要执行的操作- Returns:
- operation result | 操作结果
-
withClassLoader
Execute operation with specified classloader as context classloader 使用指定类加载器作为上下文类加载器执行操作- Parameters:
classLoader- classloader to use | 要使用的类加载器runnable- operation to execute | 要执行的操作
-
isVisible
Check if class is visible (loadable) by classloader 检查类是否对类加载器可见(可加载)- Parameters:
clazz- class to check | 要检查的类classLoader- classloader | 类加载器- Returns:
- true if visible | 可见返回 true
-
getClassLoaderHierarchy
Get classloader hierarchy 获取类加载器层次- Parameters:
classLoader- starting classloader | 起始类加载器- Returns:
- list of classloaders from child to parent | 从子到父的类加载器列表
-
findDefiningClassLoader
Find classloader that defines the class 查找定义类的类加载器- Parameters:
className- class name | 类名- Returns:
- optional classloader | 可选的类加载器
-
loadClass
-
loadClass
Load class safely with specified classloader 使用指定类加载器安全加载类- Parameters:
className- class name | 类名classLoader- classloader | 类加载器- Returns:
- optional class | 可选的类
-