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

时间:2013-08-02 09:40:34

标签: java applet sign

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

未捕获错误:java.security.AccessControlException:访问被拒绝(java.io.FilePermission未捕获错误:在NPObject上调用方法时出错。

2 个答案:

答案 0 :(得分:1)

好的,我自己得到了答案:在参考了这个链接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 :(得分:0)

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