首先,我有這個(gè)工作代碼: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(); } }}它運(yùn)行良好D:\Documents\myproject\mynet\mytest\java\security\target\classes>java -classpath . TestPolic它將生成一個(gè)名為 [testPolicy.txt] 的新文件然后我添加了一個(gè) ../../src/myPolicy.txt 內(nèi)容:grant codeBase "file:D:\Documents\myproject\mynet\mytest\java\security\target\classes*" { permission java.io.FilePermission "testPolicy.txt", "read,write";};我預(yù)計(jì),只要我指定“讀、寫(xiě)”權(quán)限,它也應(yīng)該運(yùn)行良好。但它運(yùn)行異常: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)我哪里出錯(cuò)了,如何解決?非常感謝。
java安全策略不按預(yù)期工作,總是給AccessControlException
胡說(shuō)叔叔
2022-03-10 15:52:32