首先,我有這個工作代碼: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
提交
取消