Java Reflection ошибка разрешения

Я пытаюсь загрузить класс через URLClassLoader (ну, он не работает с обычным загрузчиком классов) и хочу, чтобы у них не было никаких прав.

Поэтому я создал свой собственный менеджер безопасности, который при запуске генерирует ключ, который может быть запрошен только один раз (в главном потоке). Менеджер безопасности имеет 2 списка, applicationThread, которому будет предоставлено любое право, и temporaryList, которому будет предоставлено одно право только один раз (это касается отражения).

Поскольку это очень сложно описать, я решил выложить все это дело: смотрите ссылку ниже

Ладно, возвращаюсь: Я создал поток WatchDog, который проверяет, не занимает ли поток слишком много времени.

Когда я теперь начинаю экземпляр двух классов из URLClassLoader, я вызываю ровно 30 методов, не получая никаких ошибок, но на 31-м вызове он пытается проверить Permissions для следующего, но это происходит только после 30-го вызова.

java.lang.RuntimePermission accessClassInPackage.sun.reflect),

Кто-нибудь знает, что там происходит?

edit: У меня было время разобрать пример. http://myxcode.at/securitymanager.zip Я обнаружил, что SecurityManager не запрашивается синхронно. Просто запустите этот небольшой кусок кода и посмотрите на красные линии.

Если красные линии появляются в самой первой строке, просто запустите программу снова, и вы обнаружите, что она кажется немного неконтролируемой.

Проблема более или менее в том, что мне нужно, чтобы менеджер безопасности был синхронизирован. Вот мой вывод для тех, кто не может справиться с ошибкой (багом?) http://pastebin.com/E9yLRLif

edit2: может дело в консоли? может консоль слишком медленная?

5
задан Philipp Spiess 2 November 2011 в 13:12
поделиться