AWT EventQqueue AccessControlException
我正在将我自己的测试事件队列推送到系统事件队列上。在 TestEQueue 中,我通过一次调用 super.dispatchEvent 重载了dispatchEvent 方法,
TestEQueue mytestqueue = new TestEQueue();
Toolkit.getDefaultToolkit().getSystemEventQueue().push(TestEQueue);
但由于某种原因,新 TestQueue 中的调度失败并出现 AccessControlException。在没有 TestEQueue 的情况下,在主程序中成功调度相同的事件。
由于两个队列都在同一线程组中运行,这怎么可能?我该如何调试这个问题?这是一个非常大的测试代码库的一部分,因此我无法复制功能代码。这可能与安全管理器有关吗?
I am pushing my own test event queue over the System eventqueue. And in TestEQueue I have over loaded the dispatchEvent method with one call to super.dispatchEvent
TestEQueue mytestqueue = new TestEQueue();
Toolkit.getDefaultToolkit().getSystemEventQueue().push(TestEQueue);
But for some reason dispatching in the new TestQueue fails with AccessControlException. Where as the same event is successfully dispatched in the main program without TestEQueue.
How can this be possible as both the queues will running in the same thread group? How can I debug this issue? This is part of a very large test codebase, so I am not able to copy the functional code. Can this be related to security manager?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
没有人知道你如何在系统事件队列上构建自己的测试事件队列,也许你会错过那里的
invokeAndWait
,有用的信息 和 这里
只是我的好奇心,如果您的测试成功结束,那么请使用
SwingUtilities.invokeAndWait
进行测试,如果有一些差异(不等待任何内容),我标记了您的线程用于通知任何更改:-)此代码应该适用于测试目的,
nobody know how do you built your
own test event queue over the System eventqueue
, maybe you miss thereinvokeAndWait
,useful infos and here
just my curiosity, if your test ends with success, then please test that with
SwingUtilities.invokeAndWait
, if there some differencies (awaiting nothing), and I marked your thread for notifying any changes :-)this code should be works for Testing purposes,
请注意
push()
替换现有的EventQueue
;它不会添加新队列。我认为你的问题的前提可能是不正确的。另请参阅此问答。Note that
push()
replaces the existingEventQueue
; it doesn't add a new queue. I think the premise of your question may be incorrect. See also this Q&A.