我必须在退出应用程序时从用户系统中删除一些临时文件。该应用程序有applet。 applet jar已签名。我遵循策略调用applet的destroy方法来删除文件。我正在通过 javascript 调用applet的destroy方法 比如 document.myApplet.destroy()。调用后,我在浏览器上收到错误
未捕获错误:java.security.AccessControlException:访问被拒绝(java.io.FilePermission未捕获错误:在NPObject上调用方法时出错。
答案 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
方法不公开。但是,这并不妨碍浏览器调用它。