0

我正在开发一个必须访问访问者文件系统的 Java Applet,因此当我使用浏览器打开文件时(文件位于HTML 标签的位置),我将文件压缩.class.jar带有自签名证书的文件,我接受安全弹出窗口然后我在 Java 控制台中收到此错误:call.html<applet>

java.security.AccessControlException:访问被拒绝(java.io.FilePermission output.txt 写入)

我正在使用 aFileInputStream和 a FileOutputStreamFileInputStream有效但无效 FileOutputStream,为什么?

这是我的代码:

try {
      AccessController.doPrivileged(
          new PrivilegedExceptionAction() {              
              @Override 
              public Object run() throws FileNotFoundException {
                  outFile = new FileOutputStream("output.txt");
                  inFile = new FileInputStream("input.txt");
                  return "test";
              }
          }
      );
} catch (PrivilegedActionException e) {
    throw (FileNotFoundException) e.getException();
}

我尝试了很多方法来进行特权操作,FileInputStream总是有效,FileOutputStream但不是。output.txt不是只读文件。

4

1 回答 1

1

使用策略文件授予访问权限,并使用要用于正在查看的小程序的策略文件启动 appletviewer。

创建策略文件

策略工具是用于创建策略文件的 Java 2 平台安全工具。Controlling Applets 上的 Java Tutorial trail 详细解释了如何使用 Policy Tool。这是运行小程序所需的策略文件。您可以使用策略工具来创建它或将下面的文本复制到 ASCII 文件中。

grant {
       permission java.util.PropertyPermission 
   "user.home", "read";
       permission java.io.FilePermission 
   "${user.home}/text.txt", "read,write";
     };

这是小程序权限的完整链接 http://java.sun.com/developer/onlineTraining/Programming/BasicJava1/data.html

于 2012-05-05T12:00:00.567 回答