1

さらに、署名されたアプレットの特権についても問題があります。

自己署名アプレットでローカルドライブからファイルを削除したいのですが、例外が発生します。

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

grant {
  permission java.io.FilePermission "<<ALL FILES>>", "delete";   
};
4

1 に答える 1

1

アクセス許可を付与するには、アプレットにポリシー ファイルが必要です。これは、ユーザーのシステムに対して何ができるかを定義します。詳細については、こちらをご覧ください。

于 2012-05-24T07:21:18.640 に答える