This is an automated email from the ASF dual-hosted git repository.
zrlw pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/dubbo-integration-cases.git
The following commit(s) were added to refs/heads/main by this push:
new e5c97269 Got field ucp from super class if AppClassLoader does not
have it (#61)
e5c97269 is described below
commit e5c97269f17d8b9db2a4b085aeded495550a430c
Author: zrlw <[email protected]>
AuthorDate: Thu Jun 5 14:07:16 2025 +0800
Got field ucp from super class if AppClassLoader does not have it (#61)
---
.../java/org/apache/dubbo/test/runner/ClassLoaderUtils.java | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git
a/test/dubbo-test-runner/src/main/java/org/apache/dubbo/test/runner/ClassLoaderUtils.java
b/test/dubbo-test-runner/src/main/java/org/apache/dubbo/test/runner/ClassLoaderUtils.java
index 74c11dd6..4d2cf1eb 100644
---
a/test/dubbo-test-runner/src/main/java/org/apache/dubbo/test/runner/ClassLoaderUtils.java
+++
b/test/dubbo-test-runner/src/main/java/org/apache/dubbo/test/runner/ClassLoaderUtils.java
@@ -41,8 +41,14 @@ public class ClassLoaderUtils {
field.setAccessible(true);
Unsafe unsafe = (Unsafe) field.get(null);
- // jdk.internal.loader.ClassLoaders.AppClassLoader.ucp
- Field ucpField =
classLoader.getClass().getDeclaredField("ucp");
+ Field ucpField;
+ try {
+ // jdk.internal.loader.ClassLoaders.AppClassLoader.ucp
+ ucpField = classLoader.getClass().getDeclaredField("ucp");
+ } catch (NoSuchFieldException ignored) {
+ // get from super class because field "ucp" had been
removed from newer jdk's AppClassLoader.
+ ucpField =
classLoader.getClass().getSuperclass().getDeclaredField("ucp");
+ }
long ucpFieldOffset = unsafe.objectFieldOffset(ucpField);
Object ucpObject = unsafe.getObject(classLoader,
ucpFieldOffset);
@@ -59,4 +65,4 @@ public class ClassLoaderUtils {
}
return null;
}
-}
\ No newline at end of file
+}