首先,我有这个工作代码:import java.io.FileWriter;import java.io.IOException;public class TestPolicy { public static void main(String[] args) { FileWriter writer; try { writer = new FileWriter("testPolicy.txt"); writer.write("hello1"); writer.close(); } catch (IOException e) { e.printStackTrace(); } }}它运行良好D:\Documents\myproject\mynet\mytest\java\security\target\classes>java -classpath . TestPolic它将生成一个名为 [testPolicy.txt] 的新文件然后我添加了一个 ../../src/myPolicy.txt 内容:grant codeBase "file:D:\Documents\myproject\mynet\mytest\java\security\target\classes*" { permission java.io.FilePermission "testPolicy.txt", "read,write";};我预计,只要我指定“读、写”权限,它也应该运行良好。但它运行异常:D:\Documents\myproject\mynet\mytest\java\security\target\classes>java -classpath . -Djava.security.manager -Djava.security.policy=../../src/myPolicy.txt TestPolicyException in thread "main" java.security.AccessControlException: access denied ("java.io.FilePermission" "testPolicy.txt" "write") at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkWrite(Unknown Source) at java.io.FileOutputStream.<init>(Unknown Source) at java.io.FileOutputStream.<init>(Unknown Source) at java.io.FileWriter.<init>(Unknown Source) at TestPolicy.main(TestPolicy.java:8)我哪里出错了,如何解决?非常感谢。
1 回答
阿晨1998
TA贡献2037条经验 获得超6个赞
在codeBase您的myPolicy.txt. 您可能还需要在“类”和“*”之间使用斜线。
根据PolicyFiles 文档:
注意:codeBase 值是一个 URL,因此应始终使用斜杠(绝不是反斜杠)作为目录分隔符,即使代码源实际上位于 Windows 系统上。因此,如果 Windows 系统上代码的源位置实际上是 C:\somepath\api\,则策略 codeBase 条目应如下所示:
grant codeBase "file:/C:/somepath/api/" {
...
};
添加回答
举报
0/150
提交
取消