私は、デジタル署名されたJavaアプレットを持っています。
xmlファイルをユーザフォルダに書き込むjavascriptから関数を呼び出せるようにする必要があります。署名されたJavaアプレットにより、ローカルシステムにファイルを書き込むときにAccessControlExceptionが発生する
サブフォルダを作成し、ファイルを作成してそのファイルに追加する、アプレットのinit関数にコードがあります。これはエラーなく実行されます。 同じコードは、アクセス制御の例外がスローされ、JavaScriptから直接呼び出される関数(下記)内にある:
public boolean createLocalXMLFile(String XML) {
String path = BaseDirectory.baseDirectory + "\\TestFolder";
try {
boolean status;
status = new File(path).mkdir();
UUID fName = UUID.randomUUID();
FileWriter fstream = new FileWriter(path + "\\"+fName+".xml");
BufferedWriter out = new BufferedWriter(fstream);
out.write(XML);
//Close the output stream
out.close();
return true;
}catch (Exception ex) {
System.out.println("createXMLError \n"+ex.toString());
return false;
}
}
*ノートのベースディレクトリは、ユーザのホームパス
Javaコンソールのエラーを指し java.security.AccessControlException:アクセス(java.io.FilePermission C:\ Users \ユーザーリチャード\ハイテック\ AppStoreの\ 0d927ab7-74ba-449A-9db4-98e62cd0f53b.txt書き込み)拒否
応答ありがとうございますが、署名されたアプレットはinit関数内から同じ操作を行うことができます。私はwin7、ie9を使用しており、同じ応答でchromeとxpを試しました。ポリシーファイルを更新することは、アプリケーションが使用される環境のためのオプションではありません –
あなたは 'init()'関数の権限を持っているが、それ以外はどこにもありません。このスレッドでは、ポリシーファイルとJavaアプレットに関する悲惨な状況をまとめています。http://www.velocityreviews.com/forums/t542064-distributing-java-policy-with-applet-jar.html –
あなたの言うことが正しいと仮定します。 initメソッドで5秒ごとに起動し、ある種のファイルIO操作を実行するためにグローバルブール変数をチェックするスレッドを作成できますか?私はそれがハックのように聞こえるが、それはうまくいくかもしれないと知っている –