При установке менеджера безопасности по умолчанию - приложение затем использует политику безопасности по умолчанию.Если вы хотите предоставить нашу собственную политику, вы можете сделать это в файле политики, записанном как:
grant {
permission java.lang.RuntimePermission "accessDeclaredMembers.{class name}";
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
};
CheckMemberAccess имеет политику по умолчанию - чтобы разрешить доступ и членам PUBLIC, а такжекак доступ к классам, которые имеют тот же загрузчик классов, что и вызывающий.Во всех других случаях этот метод вызывает checkPermission () с RuntimePermission ("accessDeclaredMembers") разрешение
Для операций отражения используйте ReflectPermission class и suppressAccessChecks , который позволяет подавлять стандартные проверки доступа Java - для общедоступного, доступа по умолчанию (пакетного), защищенного и закрытого членов - выполняемые отраженными объектами в точке их использования.
Ноэто опасно в этой информации ( возможно конфиденциально ), и методы, которые обычно недоступны, будут доступны вредоносному коду.
После того, как вы предоставили файл политики - вы можете проверить его следующим образом:
try {
ReflectPermission permission = new ReflectPermission("suppressAccessChecks");
permission.checkGuard(null);
System.out.println("Permission granted");
} catch (SecurityException e) {
System.out.println("Permission denied");
}