Как обойти разрешение accessDeclaredMembers в качестве апплета?

Я использовал некоторый код из другого вопроса для доступа к закрытым полям «классы» в Java ClassLoader. Это отлично работает, однако, когда я переношу его в апплет, он запутывается с этим исключением: access denied (java.lang.RuntimePermission accessDeclaredMembers). Я сделал некоторый поиск и попытался использовать PrivlegedExceptionAction, чтобы пропустить это, но это не работает. Итак, мой вопрос таков: можно ли обойти это, и если нет, то какой еще способ получить список классов?

Код отражения:

final ClassLoader cLoader = getClass().getClassLoader();
            final Field f = ClassLoader.class.getDeclaredField("classes");
            AccessController.doPrivileged(new PrivilegedExceptionAction() {
                    public Object run() throws Exception {
                        f.setAccessible(true);
                        return null;}});
            Vector<Class> classes = (Vector<Class>)f.get(cLoader);
            cList.addAll(classes);

person Octavia Togami    schedule 06.09.2012    source источник
comment
Кроме того, я хотел бы избежать использования файла политики.   -  person Octavia Togami    schedule 06.09.2012
comment
I used some code from another question какой вопрос?   -  person Jérôme Radix    schedule 06.09.2012
comment
@jérôme Этот вопрос (stackoverflow.com/questions/2681459/)   -  person Octavia Togami    schedule 06.09.2012
comment
Чего вы пытаетесь достичь, используя это и Greenfoot? Вы не можете сделать это в апплете, если ожидаете, что он попадет на greenfoot.org, но в зависимости от вашей задачи может быть другой способ.   -  person Michael Berry    schedule 08.10.2012
comment
Это для запроса, который кто-то сделал, я пытаюсь заставить его работать.   -  person Octavia Togami    schedule 09.10.2012


Ответы (1)


Подпишите код апплета цифровой подписью (затем попросите пользователя принять его при появлении запроса), чтобы получить полные привилегии.

person Andrew Thompson    schedule 06.09.2012
comment
Извините, я забыл упомянуть об этом, но я использую для этого greenfoot (это должно быть сделано в этой программе), и я не могу сделать цифровую подпись, если я не могу сделать это программно. - person Octavia Togami; 07.09.2012
comment
(пожимает плечами) Будь то «зеленая ступня» или бумага, клей и блестки, использованные для изготовления апплета, не имеет значения. Ответ на ваш вопрос остается прежним. - person Andrew Thompson; 07.09.2012
comment
Я не могу поставить цифровую подпись, потому что я не контролирую загрузку. - person Octavia Togami; 07.09.2012
comment
У меня точно такая же проблема с приложением, которое имеет цифровую подпись, что вы порекомендуете в этом случае? - person Brian Knoblauch; 21.01.2014
comment
@BrianKnoblauch Я рекомендую вам задать свой вопрос, дать ссылку на этот и объяснить различия. Назовите точную версию JRE, в которой это происходит. Безопасность была усилена в последнее время/JRE. - person Andrew Thompson; 21.01.2014