2012-12-09 26 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服務器,我首先不會遇到這些問題。

相關問題