java.security.AccessControlException: Access denied (java.io.FilePermission
1 2 3 4 5 6
| 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 |
我正在尝试在文件夹中创建文件,但由于出现异常
我在Windows环境中工作。 我可以从Windows资源管理器创建一个文件夹,但不能从Java代码创建一个文件夹。
我该如何解决这个问题?
-
听起来您没有权限在该网络共享上创建文件。 您可以从Windows资源管理器或命令行在该目录中创建文件吗?
-
是的,我可以从Windows资源管理器创建一个文件夹,但不能从Java代码创建一个文件夹。 不知道为什么? 任何帮助将不胜感激。
-
Java应用程序如何启动? 它以与桌面会话相同的特权运行吗?
-
我正在从Eclipse中运行Java代码,并且其工作区已在D驱动器中设置。
-
哪一行引发异常?
-
您可以使用Java代码写入其他驱动器吗?
-
它在parentDir.mkdir();处引发异常
-
不,我也无法写入任何其他驱动器。
-
伙计们,这是java.security例外。 它与操作系统权限无关。 它与Java安全管理器强制执行的权限有关。
在您的\lib\security\java.policy中,尝试添加:
grant {
permission java.security.AllPermission;
};
看看是否允许您。 如果是这样,您将必须添加更多的细化权限。
看到:
java.policy文件的Java 8文档
和
http://java.sun.com/developer/onlineTraining/Programming/JDCBook/appA.html
-
,我已经尝试过了,仍然无法正常工作。 :(
-
那不是特别安全。 浏览互联网,任何站点都可以在您的计算机上运行任何代码。
-
@ TomHawtin-tackline显然,这仅用于调试,这就是为什么我说"并查看它是否允许您。如果可以,则必须添加更多的细化权限。"
-
这对于调试确实很有帮助!
尽管不建议这样做,但是如果您确实要让您的Web应用程序访问其部署目录之外的文件夹。 您需要在java.policy文件中添加以下权限(路径与Petey B的回复相同)
在你的情况下
/-表示此文件夹中的所有文件或子文件夹。
警告:但是,这样做会带来一些安全风险。
-
特别感谢您提及" /-"。 在Windows上,它不能与路径中的反斜杠一起使用(例如" -"),并且我假定通配符运算符为" *",这使我直接进入了配置地狱...