0

私はアプレットに次のコードを持っています。これは基本的にいくつかのデータをファイルに書き込み、パラメータとして writeFile method() に渡されます

public class appletToWrite extends Applet{
public int writeFile(String asPath, String asData, int aiOverwrite)
{
    int j = JOptionPane.showConfirmDialog(null,asPath+ "testing gng on", "data mil gaya!!!", 0);
    try {
        File localFile = new File(asPath);
        if (localFile.exists()) {
            if(aiOverwrite==1){
                localFile.delete();
                j =JOptionPane.showConfirmDialog(null,"overwrite = 1", "data mil gaya!!!", 0);
            }
            else{
                j = JOptionPane.showConfirmDialog(null, "overwrite = 0", "data mil gaya!!!", 0);
                return 0;
            }
        }
        j = JOptionPane.showConfirmDialog(null, "niche aa gaye", "data mil gaya!!!", 0);
        localFile.createNewFile();
        BufferedWriter localBufferedWriter = new BufferedWriter(new FileWriter(localFile, true));
        String str1;
        localBufferedWriter.write(asData);
        localBufferedWriter.close();
        return 1;
    }
    catch (Exception localException) {
        j = JOptionPane.showConfirmDialog(null, "catch mein aa gaya "+localException.getMessage(), "data nahi gaya!!!", 0);
        localException.printStackTrace();
        return 0;
    }
}
}

次のコマンドを使用してjarに自己署名しました

javac appletToWrite.java
jar cvf AppletClass.jar *.class
keytool -genkey -validity 3650 -keystore pKeyStore -alias formBuilder
keytool -selfcert -keystore pKeyStore -alias formBuilder -validity 3650
jarsigner -keystore pKeyStore AppletClass.jar formBuilder

しかし、それでもローカルマシンにファイルを書き込むためのすべての許可を取得していないのに、ファイルの許可が拒否されている理由は何ですか?

4

3 に答える 3

0

問題は、署名されたアプレットがすべてへのアクセスを許可されていない可能性があります。ブラウザの JRE 設定によって異なります。デフォルト設定は JRE 内で定義されています (JRE フォルダー内のプロパティー・ファイルを検索してください - これらのいずれかがそれを定義しています)。ただし、ブラウザはそれをオーバーライドできます。

ユーザーのホーム フォルダにファイルを作成してみてください。

于 2011-01-17T10:09:05.697 に答える
0

次の両方が当てはまる場合、まったく異なるアプローチをお勧めします。

  • ファイル サービス(サンドボックス)のデモは、ユース ケースに適しています。
  • ユーザーは、Java 1.6.0_10+ (新世代のプラグイン) を実行していると想定できます。

リンクされたデモ。(私が書いた)はサンドボックス化されており、ユーザーがファイルを開こうとしたときにのみ、JREは許可を与えるかどうかを尋ねます。

サンドボックス化されたコードがデジタル署名されている必要はありません。

新世代のプラグイン以来、デモで使用されている JNLP API。Web ページに埋め込まれたアプレットからアクセスできます。その例はGIFanim アプレットで見ることができます。

于 2011-01-18T08:29:44.617 に答える
0

返信のおかげで回答が得られました myslef 実際には、アプレットでのみアクセス許可が許可されていましたが、外部からの呼び出しのみがアクセス許可を取得できません。私はjavascriptから呼び出しを行っていて、許可も取得したいと思っていました

于 2011-01-18T10:31:17.413 に答える