2010-06-09 64 views
0

我開發了一個java servlet,它監視網絡驅動器上的文件夾中的新文件,然後根據文件的類型對它們執行一些操作。當Eclipse和Tomcat相互運行時,它在Eclipse中工作,但現在我已經將它部署到服務器(不同的計算機)上,servlet始終記錄它無法找到要映射的文件夾。完全相同的網絡驅動器被映射,並且該文件夾肯定存在。只有在服務器上運行servlet時,纔會發生此問題,而不是在開發計算機上運行。Java Servlet說文件不存在

謝謝!

PS: 它是安裝了Tomcat v6的Windows Server 2003 Enterprise Server。

回答

1

我終於想通了。

事實證明,當Tomcat運行它(顯然)作爲服務運行。該服務沒有像用戶那樣看待事物。事實證明,Windows僅在USER級別安裝網絡驅動器。因此,根據SYSTEM,驅動器不存在。解決方法是使用UNC路徑名。

我最初嘗試過,但它沒有工作,原因是因爲該服務沒有正確的權限。

感謝所有幫助過我的人。

http://wiki.apache.org/tomcat/FAQ/Windows#Q7

1

您是否在代碼中使用相對路徑來查找文件?代碼在您的IDE或本地Tomcat中運行時,到達文件系統中文件的路徑與在其他機器/環境中運行時很可能不是達到文件的路徑。

最好的辦法是徹底刪除代碼中的路徑,然後從配置文件加載它們。

+0

我做到了,並重新配置服務器的配置文件,但是,因爲它是一個網絡驅動器,該文件位於兩臺機器在E盤。 – Austin 2010-06-09 20:55:32

0

你可以試試這個API的輸出,以檢查文件路徑是你期待什麼

http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletContext.html#getRealPath(java.lang.String)

+0

請原諒我,如果這是一個愚蠢的問題,但我不斷收到行this.getServletContext()的NullPointerException; 爲什麼這將是空? – Austin 2010-06-09 21:30:51

+0

也許你想檢查這個鏈接 http://www.coderanch.com/t/360208/Servlets/java/getServletConfig-does-not-work – prashant 2010-06-10 13:43:57

+0

我得到它的工作,並且文件路徑確實不是我所期待的。謝謝,現在來找出如何解決它! – Austin 2010-06-10 16:13:13