@bars96

Откуда NoSuchFieldException при getDeclaredField() и наличии поля?

java.lang.NoSuchFieldException: c
at java.lang.Class.getDeclaredField(Unknown Source)
at ru.onlymc.OnlyMZ.CustomEntityType.getPrivateStatic(CustomEntityType.java:177)


Метод:

private static Object getPrivateStatic(Class clazz, String f) throws Exception {
  Field field = clazz.getDeclaredField(f);
  field.setAccessible(true);
  return field.get(null);
}


Вызов:

private static void a(Class paramClass, String paramString, int paramInt) {
  try {
    ((Map) getPrivateStatic(sg.class, "c")).put(paramString, paramClass);
    //...
  } catch (Exception exc) {
    exc.printStackTrace();
  }
}


sg.class (из декомпила, дабы удостовериться что поля точно существуют):

private static Map c = new HashMap();
private static Map d = new HashMap();
private static Map e = new HashMap();
private static Map f = new HashMap();
private static Map g = new HashMap();
public static HashMap a = new LinkedHashMap();
  • Вопрос задан
  • 3503 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Moxa
возможно в рантайме используется другая версия этого класса, или proguard заобфускейтил поля
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
19 апр. 2024, в 11:14
65000 руб./за проект
19 апр. 2024, в 11:08
5000 руб./за проект
19 апр. 2024, в 10:59
150000 руб./за проект