从已签名的java小程序中删除文件
当用户注销应用程序时,我必须从用户系统中删除一些临时文件。该应用程序具有小程序。小程序jar已签名。我按照这个策略调用applet的destroy方法来删除文件。我通过javascript调用applet的destroy方法 比如document.myApplet.destroy()。调用此命令后,我在浏览器上得到的错误如下从已签名的java小程序中删除文件,java,applet,sign,Java,Applet,Sign,当用户注销应用程序时,我必须从用户系统中删除一些临时文件。该应用程序具有小程序。小程序jar已签名。我按照这个策略调用applet的destroy方法来删除文件。我通过javascript调用applet的destroy方法 比如document.myApplet.destroy()。调用此命令后,我在浏览器上得到的错误如下 未捕获错误:java.security.AccessControlException:访问被拒绝(java.io.FilePermission Uncaught Error
未捕获错误:java.security.AccessControlException:访问被拒绝(java.io.FilePermission Uncaught Error:在NPObject上调用方法时出错。您应该从javascript代码中删除对
destroy
方法的调用。当用户离开页面时,浏览器会自动调用destroy方法。发生这种情况的原因可能是您的destroy
方法不是公共的。但是,这不会阻止浏览器调用它。您应该从javascript代码中删除对destroy
方法的调用。当用户离开页面时,浏览器会自动调用destroy方法。发生这种情况的原因可能是因为您的destroy
方法不可用blic。但是,这并不能阻止浏览器调用它。好的,我自己得到了答案:在参考了这个链接后,我发现,通过将它们包装在AccessController.doPrivileged方法中,可以进行读取、写入甚至删除
AccessController.doPrivileged(new PrivilegedAction() {
@Override
public Object run() {
try {
deleteAppCacheDirectory();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
});
好的,我自己得到了答案:在参考了这个链接后,我发现,通过将它们包装在AccessController.doPrivileged方法中,可以完成读取、写入甚至删除
AccessController.doPrivileged(new PrivilegedAction() {
@Override
public Object run() {
try {
deleteAppCacheDirectory();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
});
我认为您的destroy方法是私有的或其他什么。不,我的destory方法不是私有的,我发现当用户注销时它没有被chrome调用!但它是用于其他浏览器的?请参阅我的代码:public void destroy(){String tempFolder=System.getProperty(“java.io.tmpdir”);String cacheFolder=tempFolder+“/AppCache”;File File=new File(cacheFolder);if(File.exists()&&File.isDirectory()){deleteDirectory(cacheFolder);}你的代码是完美的,只要
deleteDirectory
做它应该做的事情。我认为你的销毁方法是私有的或其他什么。不,我的销毁方法不是私有的,我发现当用户注销时,它不会被chrome调用!但它是用于其他浏览器的?请参阅我的代码:public void destroy(){String tempFolder=System.getProperty(“java.io.tmpdir”);String cacheFolder=tempFolder+“/AppCache”;File File=new File(cacheFolder);if(File.exists()&&File.isDirectory()){deleteDirectory(cacheFolder);}}只要deleteDirectory
做它应该做的事,你的代码是无瑕的。