1

アプレットの .java.policy エントリに問題があります。

アプレットを使用してフォルダーとファイルを作成しようとします。既に jar に署名しており、${user.home}/.java.policy-file に次の行を追加しました。

grant {
  permission java.io.FilePermission "<<ALL FILES>>", "read";
  permission java.io.FilePermission "<<ALL FILES>>", "write";
};

この行を追加すると、私のアプレットはうまく機能しますが、これは良いスタイルではありません。任意の場所のすべての jar がファイルのアクセス許可にもなるためです

オラクルのページには、codeBase を指定された applet.jar に設定し、signedBy (jar ファイルが署名されているエイリアス) をグランド権限に設定する例があります。

これを何度も試しましたが、うまくいきません。

私が試したコード:

grant codeBase "http://www.wkmovies.de/appletDemo/-" {
  permission java.io.FilePermission "<<ALL FILES>>", "read";
  permission java.io.FilePermission "<<ALL FILES>>", "write";
};

また

grant signedBy "AKlettke" {
  permission java.io.FilePermission "<<ALL FILES>>", "read";
  permission java.io.FilePermission "<<ALL FILES>>", "write";
};

この例をwww.wkmovies.de/appletDemo/index.htmlにアップロードしました。

アプレットが機能するように、ポリシー ファイルを設定するにはどうすればよいですか?


ここで私のコードの抜粋: HTML:

<a href="javascript:document.applet1.createFolder();">
  Create Folder at C:\\Temp
</a>
<applet name="applet1" id="applet1" width="0" height="0" alt=""
  archive="applets/Demo.jar,applets/lib/commons-lang-2.4.jar" 
  code="demo.FolderCreator.class">
</applet>

FolderCreator クラス:

try {
  File f = new File("C:\\temp");
  f.mkdir();
  JOptionPane.showMessageDialog(null, "folder created",
    "successfull", JOptionPane.INFORMATION_MESSAGE);
} catch (Exception e) {
  e.printStackTrace();
  JOptionPane.showMessageDialog(null, e.getMessage(),
    e.getClass().getName(), JOptionPane.ERROR_MESSAGE);
}

(JDK1.6.0_23、Firefox 3.0.19、WinXP 32bit)

4

1 に答える 1

0

特権APIを試してください:http: //download.oracle.com/javase/1.4.2/docs/guide/security/doprivileged.html

于 2011-03-03T18:29:20.803 に答える