首页 文章

从已签名的Java小程序中删除文件

提问于
浏览
1

当他退出应用程序时,我必须从用户系统中删除一些临时文件 . 该应用程序有applet . applet jar已签名 . 我遵循策略调用applet的destroy方法来删除文件 . 我正在通过 javascript 调用applet的destroy方法,如 document.myApplet.destroy() . 调用后我在浏览器上收到错误

Uncaught Error: java.security.AccessControlException: access denied (java.io.FilePermission Uncaught Error: Error calling method on NPObject.

2 回答

  • 0

    好的,我自己得到了答案:在参考了这个链接http://docs.oracle.com/javase/7/docs/api/java/security/AccessController.html之后,我发现,读取,写入甚至删除都可以通过在AccessController.doPrivileged方法中进行封装来完成 .

    AccessController.doPrivileged(new PrivilegedAction() {
    
                    @Override
                    public Object run() {
                        try {
                            deleteAppCacheDirectory();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        return null;
                    }
    
                });
    
  • 1

    您应该从javascript代码中删除对 destroy 方法的调用 . 当用户离开页面时,浏览器会自动调用destroy方法 . 发生这种情况的原因可能是因为您的 destroy 方法不公开 . 但是,这并不妨碍浏览器调用它 .

相关问题