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
+}

Reply via email to