Tengo una situación en la que el código de un usuario arroja un IllegalAccessException
en un campo al que se accede por reflexión. Justo antes de acceder al campo, se llama al setAccessible(true)
. Entonces, me parece que este método está fallando silenciosamente.¿En qué situaciones fallará el campo field.setAccessible (true) de Java?
¿Bajo qué situaciones sucedería esto? ¿Podría esto tener algo que ver con un gerente de seguridad?
Aquí es el fragmento de código que está causando la excepción:
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;
}
Imprima el mensaje de excepción y stacktrace sería útil. – NawaMan