java.security.AccessControlException: доступ запрещен (java.io.FilePermission
final File parentDir = new File("S:\\PDSPopulatingProgram");
parentDir.mkdir();
final String hash = "popupateData";
final String fileName = hash + ".txt";
final File file = new File(parentDir, fileName);
file.createNewFile(); // Creates file PDSPopulatingProgram/popupateData.txt
Я пытаюсь создать файл в папке, но получаю исключение как
java.security.AccessControlException: Access denied
Я работаю в среде Windows. Я могу создать папку из проводника Windows, но не из кода Java.
Как я могу решить эту проблему?
2 ответа
В вашем <jre location>\lib\security\java.policy
попробуйте добавить:
grant {
permission java.security.AllPermission;
};
И посмотри, позволяет ли это тебе. Если это так, вам придется добавить более детальные разрешения.
Увидеть:
Документация по Java 8 для файлов java.policy
а также
http://java.sun.com/developer/onlineTraining/Programming/JDCBook/appA.html
Хотя это и не рекомендуется, но если вы действительно хотите, чтобы ваше веб-приложение получало доступ к папке вне своего каталога развертывания. Вам необходимо добавить следующее разрешение в java.policy
файл (путь как в ответе Пити Б)
permission java.io.FilePermission "your folder path", "write"
В вашем случае это будет
permission java.io.FilePermission "S:/PDSPopulatingProgram/-", "write"
Вот /-
означает любые файлы или подпапки внутри этой папки.
Предупреждение: Но, делая это, вы создаете угрозу безопасности.
Просто задокументируйте это здесь, в Windows, вам нужно избежать \
персонаж:
"e:\\directory\\-"