Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java小程序:再次发生AccessControlException_Java_Applet - Fatal编程技术网

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";   
};