web-dev-qa-db-fra.com

java.security.AccessControlException: accès refusé (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

J'essaie de créer un fichier dans un dossier mais je reçois une exception car

Java.security.AccessControlException: Access denied

Je travaille dans un environnement Windows. Je peux créer un dossier à partir de l'Explorateur Windows, mais pas à partir du code Java.

Comment puis-je résoudre ce problème?

23
arsenal

Dans votre <jre location>\lib\security\Java.policy essayez d'ajouter:

grant { permission Java.security.AllPermission; };

Et voyez si cela vous permet. Si c'est le cas, vous devrez ajouter des autorisations plus granulaires.

Voir:

Documentation Java 8 pour les fichiers Java.policy

et

http://Java.Sun.com/developer/onlineTraining/Programming/JDCBook/appA.html

19
Petey B

Bien que ce ne soit pas recommandé, mais si vous voulez vraiment laisser votre application Web accéder à un dossier en dehors de son répertoire de déploiement. Vous devez ajouter l'autorisation suivante dans Java.policy fichier (le chemin est comme dans la réponse de Petey B)

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

Dans votre cas, ce serait

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

Ici /- signifie tous les fichiers ou sous-dossiers de ce dossier.

Attention: Mais en faisant cela, vous invitez un certain risque de sécurité.

10
Naved