我有用Java開發的Web服務。我的其中一項服務不起作用。在調查問題後,我發現[可能]當我嘗試加載文件時,我收到一個異常,所以它會拋出一個java.lang.reflect.InvocationTargetException
。我試着運行這段代碼,每次我得到False。無法在Java Web服務中加載文件
java.io.File f = new java.io.File("svncache.collection");
System.out.println(f.exists());
我試圖複製在Tomcat的根文件(\的webapps \ ROOT),但沒有奏效。我跑這個:
System.getProperty("user.dir")
並將該文件複製到該函數返回的文件夾。之後,函數返回true
,所以我想這是我應該使用的根文件夾。但是當我再次運行這個服務時,我得到了同樣的異常。我在Windows 7 x64和Eclipse for Java EE Helios上運行此服務。
我應該做什麼的建議?
謝謝。
編輯: 我應該提到這最初是一個Java項目(不是Web應用程序)。我不得不使用它作爲Web服務。第一個建議是使用Endpoint.publish。在這裏:
Add a web service to a already available Java project
轉換[和一個小編輯]後,它完美地運行,沒有任何問題。但我需要記錄用戶活動和建議我轉換的項目,動態Web項目和創建新的Web服務: Java - Rich logging in web services 和 Java - Create a web service from an available class
所以基本上我在圈子裏我跑。使用Endpoint.publish不支持日誌記錄,使用Web Services將不允許我加載文件,並且原始Java項目不能用作我的Silverlight應用程序的Web服務。
請幫幫我。我很沮喪。謝謝。 PS:對不起,我不得不改變問題來澄清我的問題和標題以匹配。
**你希望**文件'svncache.collection'存在哪裏?你指定一個相對的文件名,這通常是一件有風險的事情。這是一個包含在你的web應用程序中的文件嗎? – 2011-04-13 07:53:17
感謝您的回覆。我不在乎文件在哪裏。我只是想加載該文件。即使我使用「C:\\ temp \\ svncache.collection」,它也無法加載它。至於第二部分,我不完全理解你的問題。這對我的服務非常重要,我必須加載它才能響應請求。 – 2011-04-13 07:58:14
那麼你應該**關心它在哪裏,畢竟你想讀它。如果它是你的webapp的一部分,那麼你根本不應該使用'File',而是使用'ServletContext.getResource [AsStream]'或'Class.getResource [AsStream]'來加載它(取決於它是否在你的某處webapp或在'/ WEB-INF/classes'目錄中的'.jar' /中)。 – 2011-04-13 08:03:22