2012-12-09 25 views
1

在创造我也遇到了这个问题,一个基于Java的Web应用程序的过程:的Tomcat不能访问由Java的API创建的文件

创建一个新的目录:

Runtime.getRuntime().exec("mkdir /home/me/web/export")); 

复制图像:

Runtime.getRuntime().exec("cp /home/me/images/a.jpg /home/me/web/export" 

接下来我将在我的JSP文件中创建一个“a.jpg”的下载链接。到现在为止一切正常,但是当我部署我在Tomcat webaplication并尝试下载该文件我得到这个消息:

Http Status 404 - The requested resource (/export/a.jpg) is not available. 

我检查了目录和图像可在那里。值得一提的是,在我将图像重命名为例如'b.jpg'并将其重命名为'a.jpg'后,该链接将工作得很好。

编辑1
此问题也会影响由JAVA API创建的文件。我使用Filewriter在同一个目录中创建'data.xml',并且当我试图通过JSP页面中的链接访问它时,我获得了与之前相同的页面。

我拼命地试图解决这个问题,通过给所有人的'chmod 777文件'可用的权限没有任何成功。

编辑2
我意识到,停止Tomcat和重新启动它后,一切都恢复了正常,现在链接工作正常。我认为,tomcat以某种方式持有这个新创建的文件,所有这一切说,有什么我可以做的解决这个问题?

最后编辑:
这恰好是多服务器的问题,因此它是逻辑将其移动到ServerFault。
感谢大家的回应。

+8

为什么你正在使用系统调用来完成使用Java API轻松完成的任务(创建目录,应对文件)? – Crozin

+0

@mdoust可能是安全问题,您的Tomcat服务器方式对此文件没有权限。尝试更改文件夹属性或将文件放在其他位置(不是c目录) –

+0

@Crozin感谢您的回应,使用JAVA API创建新目录非常简单,但我找不到任何直接的方法来处理复制图像。我找到的所有可能的解决方案都涉及使用输入流和输出流。还有其他方法可以解决吗? – mdoust

回答

0

昨天在另一个J2EE项目上工作时,我遇到了类似的问题。令我惊讶的是,这个问题根源于IDE本身。我使用Netbeans IDE进行项目并将客户端上传的图像保存到项目目录中的'/ web/export /'

什么我不知道,然后是Netbeans的从“/编译/网络”部署tomcat的文件,而不是“/网络”和被放置在“/网络/导出”的图片运行时不一定会传播到异步构建目录。重新启动服务器启动构建过程,传播所有更改以构建目录并解决给定的问题。

我想如果我手动将war文件部署到tomcat服务器,我首先不会遇到这些问题。

相关问题