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 

Próbuję utworzyć plik w folderze, ale jestem coraz wyjątek jakojava.security.AccessControlException: Odmowa dostępu (java.io.FilePermission

java.security.AccessControlException: Access denied 

Ja pracuje w środowisku Windows. mogę utworzyć folder z Eksploratora Windows, ale nie z kodu Java

Jak mogę rozwiązać ten problem

+0

Wygląda na to, że nie masz uprawnień do utworzenia pliku w tym udziale sieciowym. Czy możesz utworzyć plik w tym katalogu z poziomu Eksploratora Windows lub wiersza poleceń? –

+0

Tak Mogę utworzyć folder z Eksploratora Windows, ale nie z kodu Java. Nie wiem dlaczego? Każda pomoc zostanie doceniona. – ferhan

+0

W jaki sposób uruchamiana jest aplikacja Java? Czy działa z tymi samymi uprawnieniami, co sesja pulpitu? –

Odpowiedz

9

w swoim try <jre location>\lib\security\java.policy dodając:.?

Sprawdź, czy to ci pozwala. Jeśli tak, będziesz musiał dodać bardziej szczegółowe uprawnienia.

Patrz:

Java 8 Documentation for java.policy files

i

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

+1

, Próbowałem tego, wciąż nie działa. :( – ferhan

+3

To nie jest szczególnie bezpieczne.Przeglądaj Internet i każda witryna może uruchomić dowolny kod na twoim komputerze –

+2

@ TomHawtin-tackline to jest oczywiście tylko do debugowania, dlatego powiedziałem "I zobacz czy to ci pozwala. Jeśli tak, będziesz musiał dodać bardziej szczegółowe uprawnienia. " –

7

Chociaż nie jest to zalecane, ale jeśli naprawdę chcesz, aby twoje dostęp do aplikacji internetowej folderze poza swoim katalogu rozmieszczania. Trzeba dodać następujące zgody w java.policy pliku (ścieżka jest jak w odpowiedzi z dnia Petey B)

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

w Twoim przypadku byłoby

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

Tutaj /- oznacza dowolne pliki lub podfoldery wewnątrz ten folder.

Ostrzeżenie: Ale robiąc to, jesteś narażony na pewne zagrożenie bezpieczeństwa.

+1

Specjalne podziękowania za dodanie"/- ".Na windowsach nie będzie działać z ukośnikami w ścieżkach (jak" \ - "), i założyłem operatorem wieloznacznym będzie "*", co doprowadziło mnie wprost do konfiguracji piekła ... – RobertG

+0

nie działa w MAC, używając Java 8 – sumanth232