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 

Estoy intentando crear un archivo en una carpeta, pero estoy consiguiendo excepción, ya quejava.security.AccessControlException: Acceso denegado (java.io.FilePermission

java.security.AccessControlException: Access denied 

estoy trabajando en el entorno de ventanas. puedo crear una carpeta desde el Explorador de Windows, pero no desde el código Java

¿Cómo puedo resolver este problema

+0

Parece que no tiene permiso para crear un archivo en ese recurso compartido de red. ¿Puedes crear un archivo en ese directorio desde Windows Explorer o desde la línea de comandos? –

+0

Sí, puedo crear una carpeta desde el Explorador de Windows, pero no desde el Código Java. No sé por qué? Cualquier ayuda será apreciada. – ferhan

+0

¿Cómo se lanza la aplicación Java? ¿Se está ejecutando con los mismos privilegios que su sesión de escritorio? –

Respuesta

9

Dentro de su <jre location>\lib\security\java.policy intento de añadir:.?

grant { permission java.security.AllPermission; };

y ver si se le permite. Si es así, tendrá que agregar permisos más granulares.

Ver:

Java 8 Documentation for java.policy files

y

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

+1

, lo he intentado, todavía no está funcionando. :( – ferhan

+3

Eso no es particularmente seguro. Navegue por Internet y cualquier sitio puede ejecutar cualquier código en su máquina. –

+2

@ TomHawtin-tackline Esto es obviamente solo para la depuración, razón por la cual afirmé "Y vea si le permite." Si es así, tendrá que agregar permisos más granulares. " –

7

Aunque no es recomendable, pero si realmente desea que su acceso a la aplicación web una carpeta fuera de su directorio de implementación. Es necesario añadir siguiente permiso en java.policy archivo (camino es como en la respuesta de Petey B)

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

En su caso sería

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

Aquí /- significa que todos los archivos o subcarpetas dentro esta carpeta

Advertencia: Pero al hacer esto, está invitando a algún riesgo de seguridad.

+1

Gracias especiales por mencionar"/- ". En Windows, no funcionará con barras diagonales inversas en las rutas (como" \ - "), y asumí el operador comodín sería "*", lo que me llevó directamente al infierno de la configuración ... – RobertG

+0

no funciona en MAC, usa Java 8 – sumanth232

Cuestiones relacionadas