【问题标题】:Getting access denied when using AWTEventListener in Applet在 Applet 中使用 AWTEventListener 时访问被拒绝
【发布时间】:2012-12-17 22:10:08
【问题描述】:

我在浏览器中嵌入了一个小程序。在小程序init() 方法中,我有以下代码:

Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
        public void eventDispatched(AWTEvent event) {
            if(event instanceof MouseEvent){
                MouseEvent evt = (MouseEvent)event;
                if(evt.getID() == MouseEvent.MOUSE_CLICKED){
                    System.out.println("Mouse Clicked");
                }
            }
        }
    }, AWTEvent.MOUSE_EVENT_MASK);

加载小程序时出现错误:

access denied ("java.awt.AWTPermission" "listenToAllAWTEvents")

政策

现在在我的策略文件(下面的路径)中,我在底部附加了:

权限

grant  {
    permission java.security.AllPermission;
};

路径

C:/Program Files/Java/jdk1.7.0_10/jre/lib/security/java.policy

但我仍然遇到同样的访问被拒绝问题。

任何人都知道为什么即使我授予 java.policy 文件中的所有权限,我仍然会收到该错误?

【问题讨论】:

  • “我有以下代码:” 为什么?你想达到什么目的? “现在在我的“..java.policy”中不要弄乱策略文件,它们不是部署具有扩展权限的小程序的实用方法。小程序需要进行数字签名,如果它是做这样的事情。
  • 我只是想添加我自己的全局鼠标监听器。这将避免让我为每个单独的组件编写鼠标侦听器。
  • 作为最终用户,我不愿意仅仅为了从同一 JVM 中的所有小程序获取事件而允许任何人扩展权限。对小程序中的组件进行递归调用并添加侦听器,或者更好的是,查看Action API 和键绑定之类的内容。
  • 感谢该链接,它现在可以使用了。我正在修改错误的 java.policy 文件。我同意应该签署小程序,但这是我们目前所拥有的。此外,此小程序部署在用户很少的内部网络中。我还将权限范围缩小到“listenToAllAWTEvents”。

标签: java swing security applet awt


【解决方案1】:

这是我编写/部署的可信代码的链接。它为 JVM 生成 java.home property

这里指向:

C:\Program Files (x86)\Java\jre7 

请注意,该路径的任何部分都不包含jdk,正如我现在在上面的路径中所指出的那样。确保策略文件与小程序中标识的路径相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    相关资源
    最近更新 更多