私はアプレットを実装しましたが、これまでのところ Java 6 で問題なく動作しています。最近、Java 7 に切り替えたときにアプレットが動作を停止し、javascript コンソールに次の例外が表示されました。
Uncaught Error: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "user.home" "read")
この動作は一貫して再現可能であり、Linux コマンドである Java バージョンから別のバージョンに切り替えるだけupdate-java-alternatives
です。
アプレットは自己署名されており、そのすべてのパブリック メソッドは invoke を呼び出しますAccessController.doPrivileged()
。次に例を示します。
public File chooseFile() {
return AccessController.doPrivileged( new PrivilegedAction<File>() {
public File run() {
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(false);
return chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION ?
chooser.getSelectedFile() : null;
}
} );
}
ローカル ファイルを使用して問題を解決しましたjava.policy
が、特別なインストール手順を要求することはできません。
これらのJava 7の新しいセキュリティ制限と/またはそれらを回避する方法を知っている人はいますか?