Я пытаюсь загрузить класс через 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: может дело в консоли? может консоль слишком медленная?