GWT文件上载java.security.AccessControlException:拒绝访问(java.io.FilePermission

GWT文件上载java.security.AccessControlException:拒绝访问(java.io.FilePermission,gwt,file-upload,permission-denied,Gwt,File Upload,Permission Denied,我有一个文件上传Servlet,并尝试将一些文件存储为: try{ File uploadedFile = new File(UPLOAD_DIRECTORY + fileName); File uploadedFile = new File("/"+fileName); item.write(uploadedFile); } catch (Exception e) { e.printStackTrace(); } 之后,我得到以下错误: java.securi

我有一个文件上传Servlet,并尝试将一些文件存储为:

try{
    File uploadedFile = new File(UPLOAD_DIRECTORY + fileName);
    File uploadedFile = new File("/"+fileName);
    item.write(uploadedFile);
}
catch (Exception e) {
    e.printStackTrace();
}
之后,我得到以下错误:

java.security.AccessControlException: access denied (java.io.FilePermission /untitled.html write)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)

如何修复它?

您可以通过应用服务器将
/
设置为可写(我觉得这不是个好主意),或者将上载的文件存储在另一个可写位置

File uploadedFile = new File(UPLOAD_DIRECTORY + fileName);
File uploadedFile = new File("/"+fileName);
您似乎还试图两次声明
uploadedFile
。从错误中可以看出
UPLOAD\u目录
/
,或者您实际使用的是第二行。也许您只需要在
UPLOAD\u目录中提供正确的位置

要回答有关Java策略文件的评论问题,请执行以下操作:

来自java.sun.com:

Java有一个策略文件 平台安装(系统)和 每个用户的可选策略文件。 系统策略文件位于中 {java.home}/lib/security/java.policy, 并且用户策略文件位于每个 用户的主目录。系统和 用户策略文件是组合的。对于 例如,可能有一个系统策略 授予很少权限的文件 系统上的所有用户,以及 单个策略文件授予 对某些应用程序的附加权限 用户

请参阅策略文件中有关设置文件系统权限的部分


为了重申我自己的意见,您还需要注意操作系统中的文件系统权限,其控制将取决于您使用的操作系统。

我正在Jetty服务器上使用eclipse,因此如何设置写入权限?@gwt_user我实际上在考虑文件系统权限。但是如果您想更改Java策略文件,您可以在这里查看:@IsaacTruett我必须将文件放在我的eclipse项目中的什么位置?我必须填写什么?@gwt_user我刚刚更新了关于Java策略文件的更多信息,包括我链接的页面上描述策略文件位置的概述中的引用。@IsaacTruett with user home directory您是指用户吗/{User Name}?我添加了grant{permission java.io.FilePermission”““read,write,delete,execute”};但这不起作用?我正在使用OSX并尝试从Eclipse以开发模式运行我的应用程序。我该怎么办?