Java小程序:再次发生AccessControlException
再次以已签名小程序的权限发布 我想让我的自签名小程序从本地驱动器删除一个文件,但我得到一个例外:Java小程序:再次发生AccessControlException,java,applet,Java,Applet,再次以已签名小程序的权限发布 我想让我的自签名小程序从本地驱动器删除一个文件,但我得到一个例外: java.security.AccessControlException: access denied (java.io.FilePermission /Users/me/tmp.txt delete) 在这里,我调用删除: public void deleteFile( String path ) { AccessController.doPrivileged
java.security.AccessControlException: access denied
(java.io.FilePermission /Users/me/tmp.txt delete)
在这里,我调用删除:
public void deleteFile( String path )
{
AccessController.doPrivileged( new Deleter( path ));
}
此类将删除该文件:
class Deleter implements PrivilegedAction {
public Deleter( String path ) {
m_path = path;
}
public Object run()
{
File file = new File( m_path );
file.delete();
return null;
}
private String m_path;
};
HTML代码是:
<APPLET CODE="HelloWorld.class" ARCHIVE="SignedHelloWorld.jar" WIDTH=600 HEIGHT=25>
<PARAM NAME="MAYSCRIPT" VALUE="true">
</APPLET>
已解决:
我需要添加策略(在OS X下):
cat>~/.java.policy
授予{
权限java.io.FilePermission“”“删除”;
};
要授予权限,小程序需要策略文件。这定义了他们可以对用户系统做什么。您可以找到更多信息。要授予权限,小程序需要策略文件。这定义了他们可以对用户系统做什么。您可以找到更多信息。您了解这是一个安全问题吗?我不明白这是一个签名应用程序的问题。好的,您的策略文件中有什么?错误。。。没有策略文件,这不是签名的替代方案吗?(显然不是:)当浏览器询问您时,您是否告诉过您的浏览器信任您的自签名证书?您明白这是一个安全问题吗?我不明白这是一个签名应用程序的问题。好的,您的策略文件中有什么?错误。。。没有策略文件,这不是签名的替代方案吗?(显然没有:)当浏览器询问您时,您是否告诉浏览器信任您的自签名证书?
cat >> ~/.java.policy
grant {
permission java.io.FilePermission "<<ALL FILES>>", "delete";
};