さらに、署名されたアプレットの特権についても問題があります。
自己署名アプレットでローカルドライブからファイルを削除したいのですが、例外が発生します。
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";
};