Как обойти разрешение 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)


arrow_upward
2
arrow_downward

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

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