alibaba / jvm-sandbox

Real - time non-invasive AOP framework container based on JVM
GNU Lesser General Public License v3.0
6.77k stars 1.56k forks source link

clean ProtectionDomain in acc failed. #446

Closed yupd closed 9 months ago

yupd commented 11 months ago

jdk 版本

java -version
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) 64-Bit Server VM (build 17.0-b16, mixed mode)

找不到方法

java.lang.NoSuchMethodException: java.security.AccessControlContext.getContext()

解决方法

private void cleanProtectionDomainWhichCameFromModuleJarClassLoader() {

        // got ProtectionDomain[] from URLClassLoader's acc
        final AccessControlContext acc = unCaughtGetClassDeclaredJavaFieldValue(URLClassLoader.class, "acc", this);
        //final ProtectionDomain[] protectionDomainArray = unCaughtInvokeMethod(
        //        unCaughtGetClassDeclaredJavaMethod(AccessControlContext.class, "getContext"),
        //        acc
        //);

       // 通过反射字段获取值,增加jdk兼容性
       final ProtectionDomain[] protectionDomainArray = unCaughtGetClassDeclaredJavaFieldValue(AccessControlContext.class, "context", acc);

}
z529192557 commented 9 months ago

目前最新版本的sandbox最低jdk要求是jdk8