我写了一个servlet,它将一个图像写入我的应用程序的根目录,然后在获得GET请求时将其传递给客户端。当我在带有jetty的Eclipse中测试它时,一切正常(带有GWT插件)。 但是当我将它移动到Tomcat时,我得到了filenotfound异常(因为图像根本没有被写入因此无法返回给客户端)。 这个问题是否有写文件的权限?
我将此添加到catalina.policy文件中,但它也没有帮助(webui是我的应用程序的文件夹):
grant {
permission java.io.FilePermission "${catalina.home}/webapps/webui/","read,write,delete";
permission java.io.FilePermission "${catalina.home}/webapps/webui/*","read,write,delete";
};
答案 0 :(得分:5)
修改安全策略对此没有帮助;如果是政策问题,您将获得SecurityException
而不是FileNotFoundException
。
后者表示Java进程正在尝试以适当的模式打开文件句柄,但被操作系统拒绝。最可能的原因是Java进程正在执行的文件(或父目录)不可写。
查看您尝试写入的文件夹的权限,特别是查看您运行Tomcat的用户以及他们将拥有的有效权限。
答案 1 :(得分:1)
我解决了这个问题。正如Andrzej所说,问题不在于权限。文件路径错误,因为我没有使用serverContext.getRealPath()来编写文件。 看到这个后我找到了解决方案:http://www.velocityreviews.com/forums/t131134-specifying-path-for-file-to-be-read-by-servlet-with-tomcat.html
TNX。