13
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: Доступ запрещен (java.io.FilePermission

java.security.AccessControlException: Access denied 

Я работаю в среде Windows. Я могу создать папку из Windows Explorer, но не из Java кодекса

Как я могу решить эту проблему

+0

Похоже, что у вас нет разрешения на создание файла на этом сетевом ресурсе. Можете ли вы создать файл в этом каталоге из проводника Windows или командной строки? –

+0

Да Я могу создать папку из Проводника Windows, но не из кода Java. Не знаете, почему? Любая помощь будет оценена. – ferhan

+0

Как запускается приложение Java? Он работает с теми же привилегиями, что и ваш рабочий стол? –

ответ

9

в пределах вашей <jre location>\lib\security\java.policy попробуйте добавить:.?

grant { permission java.security.AllPermission; };

И посмотреть, если это позволяет. Если это так, вам нужно будет добавить более подробные разрешения.

См:

Java 8 Documentation for java.policy files

и

http://java.sun.com/developer/onlineTraining/Programming/JDCBook/appA.html

+1

, я пробовал это, но он не работает. :( – ferhan

+3

Это не особенно безопасно. Просмотрите Интернет, и любой сайт может запускать любой код на вашем компьютере. –

+2

@ TomHawtin-tackline это, очевидно, только для отладки, поэтому я сказал «И посмотрим, разрешает ли он вам. Если это так, вам нужно будет добавить более подробные разрешения ». –

7

Хотя это не рекомендуется, но если вы действительно хотите, чтобы ваш доступ веб-приложений в папку за пределами своей директории развертывания. Вам нужно добавить следующее разрешение в java.policy файла (путь, как в ответе Пити B)

permission java.io.FilePermission "your folder path", "write" 

В вашем случае это будет

permission java.io.FilePermission "S:/PDSPopulatingProgram/-", "write" 

Здесь /- означает любые файлы или вложенные папки внутри этой папке.

Предупреждение: Но при этом вы вызываете угрозу для безопасности.

+1

Особая благодарность за упоминание«/- ». В окнах она не будет работать с обратными косами в дорожках (например,« \ - »), и я предположил, оператор подстановки будет «*», что привело меня прямо к конфигурации ад ... – RobertG

+0

не работает в MAC, используя Java 8 – sumanth232

Смежные вопросы