11package io .dongtai .iast .core .utils ;
22
3+ import io .dongtai .log .DongTaiLog ;
4+
5+ import java .lang .reflect .AccessibleObject ;
36import java .lang .reflect .Field ;
47import java .lang .reflect .Method ;
58import java .security .AccessController ;
@@ -13,15 +16,15 @@ public class ReflectUtils {
1316
1417 public static Field getFieldFromClass (Class <?> cls , String fieldName ) throws NoSuchFieldException {
1518 Field field = cls .getDeclaredField (fieldName );
16- field . setAccessible (true );
19+ setAccessible (field );
1720 return field ;
1821 }
1922
2023 public static Field getDeclaredFieldFromClassByName (Class <?> cls , String fieldName ) {
2124 Field [] declaredFields = cls .getDeclaredFields ();
2225 for (Field field : declaredFields ) {
2326 if (fieldName .equals (field .getName ())) {
24- field . setAccessible (true );
27+ setAccessible (field );
2528 return field ;
2629 }
2730 }
@@ -62,11 +65,11 @@ public static Method getPublicMethodFromClass(Class<?> cls, String methodName, C
6265
6366 public static Method getSecurityPublicMethod (Method method ) throws NoSuchMethodException {
6467 if (hasNotSecurityManager ()) {
65- method . setAccessible (true );
68+ setAccessible (method );
6669 return method ;
6770 }
6871 return AccessController .doPrivileged ((PrivilegedAction <Method >) () -> {
69- method . setAccessible (true );
72+ setAccessible (method );
7073 return method ;
7174 });
7275 }
@@ -175,12 +178,23 @@ public static Field[] getDeclaredFieldsSecurity(Class<?> cls) {
175178 private static Field [] getDeclaredFields (Class <?> cls ) {
176179 Field [] declaredFields = cls .getDeclaredFields ();
177180 for (Field field : declaredFields ) {
178- field . setAccessible (true );
181+ setAccessible (field );
179182 }
180183 return declaredFields ;
181184 }
182185
183186 private static boolean hasNotSecurityManager () {
184187 return System .getSecurityManager () == null ;
185188 }
189+
190+ private static void setAccessible (AccessibleObject accessibleObject ) {
191+ try {
192+ if (!accessibleObject .isAccessible ()) {
193+ accessibleObject .setAccessible (true );
194+ }
195+ } catch (Throwable e ){
196+ DongTaiLog .debug (e .getMessage ());
197+ }
198+
199+ }
186200}
0 commit comments