我正在开发一个必须访问访问者文件系统的Java Applet,因此当我打开{{1}时,我将.class
文件压缩为具有自签名证书的.jar
文件我的浏览器文件(文件位于call.html
HTML标签),我接受安全弹出窗口,然后我在Java控制台中收到此错误:
java.security.AccessControlException:拒绝访问(java.io.FilePermission output.txt write)
我正在使用<applet>
和FileInputStream
。 FileOutputStream
有效,但不是FileInputStream
,为什么?
这是我的代码:
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
不是只读文件。
答案 0 :(得分:1)
使用策略文件授予访问权限,并启动appletviewer,其中包含要用于正在查看的applet的策略文件。
创建政策文件
策略工具是用于创建策略文件的Java 2平台安全工具。控制小程序的Java Tutorial跟踪解释了如何详细使用策略工具。以下是运行applet所需的策略文件。您可以使用策略工具创建它或将下面的文本复制到ASCII文件中。
grant {
permission java.util.PropertyPermission
"user.home", "read";
permission java.io.FilePermission
"${user.home}/text.txt", "read,write";
};
以下是applets权限的完整链接 http://java.sun.com/developer/onlineTraining/Programming/BasicJava1/data.html