2012-12-07 40 views
0

我正在運行Tomcat 5.0,並且從Java從tomcats'webapps'獲取資源時遇到問題。還有的是,我檢查,如果服務器啓動時,它的服務器啓動後提供從Tomcat獲取資源的FileNotFoundException

tomcat_folder/webapps/myProject/site.html 

在Java中運行此代碼的HTML文件:

URL url = new URL("http://localhost:8080/myProject/site.html"); 
    URLConnection con = url.openConnection(); 
    Object content = con.getContent(); 

的getContent()拋出FileNotFoundException異常。

但是當我把「http:// localhost:8080/myProject/site.html」放到瀏覽器中時,網站顯示沒有問題。

此外,我測試了4臺機器上 - 2一切都很好,在其他2 FileNotFoundException。

我認爲這可能是一些文件夾安全訪問問題或用戶權限,但最終我沒有任何線索。有什麼建議麼?

+0

您是否嘗試過使用文件系統上的路徑,即 'URL url = new URL(「C:/tomcat/webapps/myProject/site.html」);' –

回答

0

我找到了解決我的問題的方法。

原因是使用端口8080的Windows服務,Tomcat也在使用端口8080。資源可通過瀏覽器獲得,但不能從Java代碼獲得。 在停止衝突服務之後,所有事情都像現在這樣。

1

假設你在窗戶上。您可能需要將java.exe添加到您的病毒掃描程序/防火牆以允許它發出綁定的網絡連接。

+0

這是個好主意。所以我允許完全訪問我發現的所有java.exe進程,不幸的是問題仍然存在。 – Dedemonn

+0

是的,我認爲它可能有幫助,但林不知道病毒掃描程序阻止本地主機連接。 –

0

如果你的代碼在servlet中,那麼你可以得到你的servlet的真實路徑,然後給它添加文件名。

String servletPath = getServletContext().getRealPath("/"); 
URL url = new URL(servletPath+"site.html"); 

對於普通的java應用程序,您將需要Tomcat安裝的webapps文件夾的完整路徑。

+0

不是,它在服務器之外的普通Java應用程序中。 – Dedemonn

+0

@Dedemonn查看我的更新回答 – Abubakkar

+0

好的,嘗試新的URL(「file:/// C:/tomcat/webapps/myProject/site.html」)並且返回的對象爲null(因爲不給出'file:///'給出未知協議的錯誤)。在tomcat之外嘗試了一些文件的url,並且我也得到了null引用,所以我不知道它是正確的使用方式還是java不能通過這樣的URL訪問任何東西。 – Dedemonn

0

您的代碼似乎是正確的。
但你錯過了實際連接
con .connect();
在嘗試獲取內容之前

+0

沒有'con.connect()'的代碼也可以工作 - 在我需要解決的另一臺機器上只有一些問題。 – Dedemonn