2012-05-04 131 views
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環境下工作。我可以從Java代碼創建一個從Windows資源管理器的文件夾,但不能

我怎樣才能解決這個問題

+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

雖然不建議,但如果你真的想讓你的Web應用程序訪問其部署目錄以外的文件夾。您需要添加下列權限在java.policy文件(路徑爲皮蒂B的回覆)

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

你的情況,這將是

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

這裏/-意味着內部的任何文件或子文件夾這個文件夾。

警告:但是這樣做會引發一些安全風險。

+1

特別感謝提及」/ - 「,在windows上,它不會在路徑中使用反斜槓(如」\ - 「),並且我假定通配符運算符將是「*」,這導致我直接進入配置地獄...... – RobertG

+0

不工作在MAC中,使用Java 8 – sumanth232

相關問題