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 List<PackageSplitReport> detectPackageSplits(ClassLoader... classLoaders) Detect package splits across the specified ClassLoaders 检测指定 ClassLoader 中的包拆分static Optional<ClassLoader> findDefiningClassLoader(String className) Find classloader that defines the class 查找定义类的类加载器static List<DuplicateClassReport> findDuplicateClasses(ClassLoader... classLoaders) Find duplicate classes across the specified ClassLoaders 在指定的 ClassLoader 中查找重复类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(int maxHistoryVersions) Create hot-swap classloader with version history support 创建带版本历史支持的热替换类加载器static HotSwapClassLoaderhotSwapLoader(ClassLoader parent) Create hot-swap classloader with parent 使用父加载器创建热替换类加载器static HotSwapClassLoaderhotSwapLoader(ClassLoader parent, int maxHistoryVersions) Create hot-swap classloader with parent and version history support 使用父加载器创建带版本历史支持的热替换类加载器static booleanCheck if running in GraalVM native image 检查是否在 GraalVM 原生镜像中运行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 ClassLoadTracetraceClassLoading(String className, ClassLoader classLoader) Trace the class loading delegation chain for a class 跟踪类的类加载委托链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 | 热替换类加载器
-
hotSwapLoader
Create hot-swap classloader with version history support 创建带版本历史支持的热替换类加载器- Parameters:
maxHistoryVersions- max history versions to keep per class | 每个类保留的最大历史版本数- Returns:
- hot-swap classloader | 热替换类加载器
-
hotSwapLoader
Create hot-swap classloader with parent and version history support 使用父加载器创建带版本历史支持的热替换类加载器- Parameters:
parent- parent classloader | 父类加载器maxHistoryVersions- max history versions to keep per class | 每个类保留的最大历史版本数- 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 | 可选的类
-
findDuplicateClasses
Find duplicate classes across the specified ClassLoaders 在指定的 ClassLoader 中查找重复类- Parameters:
classLoaders- classloaders to scan | 要扫描的类加载器- Returns:
- list of duplicate class reports | 重复类报告列表
-
detectPackageSplits
Detect package splits across the specified ClassLoaders 检测指定 ClassLoader 中的包拆分- Parameters:
classLoaders- classloaders to scan | 要扫描的类加载器- Returns:
- list of package split reports | 包拆分报告列表
-
traceClassLoading
Trace the class loading delegation chain for a class 跟踪类的类加载委托链- Parameters:
className- fully-qualified class name | 完全限定类名classLoader- starting classloader | 起始类加载器- Returns:
- class load trace | 类加载跟踪
-
isNativeImage
public static boolean isNativeImage()Check if running in GraalVM native image 检查是否在 GraalVM 原生镜像中运行- Returns:
- true if in native image | 在原生镜像中返回 true
-