Ho una situazione in cui il codice di un utente sta lanciando un IllegalAccessException
su un campo a cui si accede per riflessione. Appena prima di accedere al campo, viene chiamato setAccessible(true)
. Quindi, mi sembra che questo metodo stia silenziosamente fallendo.In quali situazioni il field.setAccessible (true) di Java fallirà?
In quali situazioni ciò accadrebbe? Questo potrebbe avere qualcosa a che fare con un responsabile della sicurezza?
Ecco il frammento di codice che causa l'eccezione:
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;
}
Stampare il messaggio di eccezione e lo stacktrace sarebbe utile. – NawaMan