我的applet的.java.policy条目存在问题。

我会尝试使用小程序创建文件夹和文件。我已经签名了jar,并在$ {user.home} /。java.policy-file文件中添加了以下几行:

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


通过添加这些行,我的applet很好用,但这不是一个好的样式,因为在任何地方的每个jar都同样具有文件许可权。

在oracle页面上有一些示例,这些示例将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

我如何设置策略文件,使我的applet正常工作?



这是我的代码片段:
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 32位)

最佳答案

尝试特权API:
http://download.oracle.com/javase/1.4.2/docs/guide/security/doprivileged.html

10-01 05:12
查看更多