Mam sytuację, w której kod użytkownika rzuca IllegalAccessException
na polu dostępnym przez odbicie. Tuż przed uzyskaniem dostępu do pola wywołuje się setAccessible(true)
. Wydaje mi się więc, że ta metoda nie działa prawidłowo.W jakich sytuacjach Java field.setAccessible (true) nie działa?
W jakich sytuacjach by to się stało? Czy to może mieć coś wspólnego z menedżerem bezpieczeństwa?
Oto fragment kodu, który jest przyczyną wyjątek:
private static Field levelField;
public int getLevel() {
try {
if (levelField == null) {
levelField = MessageInfo.class.getDeclaredField("level");
levelField.setAccessible(true);
}
return levelField.getInt(this); // <-- IllegalAccessException thrown here
} catch (Exception e) {
handleException(e);
}
return ICompilationUnit.NO_AST;
}
Wydruk komunikatu wyjątku i stosu byłoby pomocne. – NawaMan