我正在尝试通过 URLClassLoader 加载一个类(好吧,它既不能与普通的类加载器一起使用)并且希望它们没有任何权限。
因此,我创建了自己的安全管理器,它在启动时生成一个密钥,只能请求一次(在主线程中)。安全管理器有 2 个列表,applicationThread 将被授予任何权限,而temporaryList 将仅被授予一次权限(它与反射有关)。
由于很难描述,我决定上传整个内容:查看下面的链接
好的,回来:我创建了一个 WatchDog 线程,它检查线程是否花费太多时间。
当我现在开始从 URLClassLoader 实例化两个类时,我准确地调用了 30 个方法而没有出现任何错误,但是在第 31 次调用时,它会尝试检查以下权限,但这只是在第 30 次调用之后发生的。
java.lang.RuntimePermission 访问ClassInPackage.sun.reflect),
有谁知道那里发生了什么?
编辑:我有时间剥离这个例子。 http://myxcode.at/securitymanager.zip 我发现,SecurityManager 没有被要求同步。只需运行这段小代码,看看红线。
如果红线出现在第一行,再次运行程序,你会发现它似乎有点不受控制。
问题或多或少是,我需要同步安全管理器。这是我为那些无法面对错误的人的输出(错误?) http://pastebin.com/E9yLRLif
edit2:也许是关于控制台的?也许控制台太慢了?