GWT文件上载java.security.AccessControlException:拒绝访问(java.io.FilePermission
我有一个文件上传Servlet,并尝试将一些文件存储为: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
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以开发模式运行我的应用程序。我该怎么办?