java.security.AccessControlException: Zugriff verweigert (java.io.FilePermission

Lesezeit: 2 Minuten

Benutzer-Avatar
Arsenal

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

Ich versuche, eine Datei in einem Ordner zu erstellen, erhalte jedoch eine Ausnahme

java.security.AccessControlException: Access denied

Ich arbeite in einer Windows-Umgebung. Ich kann einen Ordner aus dem Windows Explorer erstellen, aber nicht aus dem Java-Code.

Wie kann ich dieses Problem lösen?

  • Klingt so, als hätten Sie keine Berechtigung zum Erstellen einer Datei auf dieser Netzwerkfreigabe. Können Sie in diesem Verzeichnis eine Datei im Windows Explorer oder über die Befehlszeile erstellen?

    – Jim Garnison

    4. Mai 2012 um 18:17 Uhr


  • Ja, ich kann einen Ordner aus dem Windows-Explorer erstellen, aber nicht aus dem Java-Code. Weiß nicht warum? Jede Hilfe wird geschätzt.

    – Arsenal

    4. Mai 2012 um 18:18 Uhr

  • Wie wird die Java-App gestartet? Wird es mit den gleichen Rechten wie Ihre Desktop-Sitzung ausgeführt?

    – Jim Garnison

    4. Mai 2012 um 18:34 Uhr

  • Ich führe den Java-Code von meiner Sonnenfinsternis aus und sein Arbeitsbereich ist auf Laufwerk D eingerichtet.

    – Arsenal

    4. Mai 2012 um 18:35 Uhr

  • Leute, das ist ein java.security Ausnahme. Es hat nichts mit Betriebssystemberechtigungen zu tun. Es hat mit Berechtigungen zu tun, die vom Java Security Manager erzwungen werden.

    – Benutzer207421

    24. Dezember 2013 um 1:32 Uhr


Benutzer-Avatar
Petey B

In deinem <jre location>\lib\security\java.policy versuchen Sie Folgendes hinzuzufügen:

grant {
permission java.security.AllPermission;
};

Und sehen Sie, ob es Ihnen erlaubt. Wenn dies der Fall ist, müssen Sie detailliertere Berechtigungen hinzufügen.

Sehen:

Java 8-Dokumentation für java.policy-Dateien

und

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

Benutzer-Avatar
Naved

Es wird zwar nicht empfohlen, aber wenn Sie Ihre Webanwendung wirklich auf einen Ordner außerhalb ihres Bereitstellungsverzeichnisses zugreifen lassen möchten. Sie müssen die folgende Berechtigung hinzufügen java.policy Datei (Pfad ist wie in der Antwort von Petey B)

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

In Ihrem Fall wäre es

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

Hier /- bedeutet alle Dateien oder Unterordner in diesem Ordner.

Warnung: Aber dadurch laden Sie ein gewisses Sicherheitsrisiko ein.

  • Besonderen Dank für die Erwähnung von “/-“. Unter Windows funktioniert es nicht mit Backslashes in Pfaden (wie “\-“), und ich nahm an, dass der Platzhalteroperator “*” wäre, was mich direkt in die Konfigurationshölle führte …

    – RobertG

    5. September 2014 um 9:56 Uhr

Dokumentieren Sie es einfach hier unter Windows, dem Sie entkommen müssen \ Charakter:

"e:\\directory\\-"

  • Von dem Oracle-Dokumentation zu Richtliniendateien: Um plattformunabhängige Richtliniendateien zu unterstützen, können Sie auch die spezielle Notation “${/}” verwenden, die eine Abkürzung für “${file.separator}” ist. Dies ermöglicht Dinge wie permission java.io.FilePermission "${user.home}${/}*", "read";

    – Peter Wippermann

    22. November 2021 um 10:54 Uhr


1014230cookie-checkjava.security.AccessControlException: Zugriff verweigert (java.io.FilePermission

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy