2010-03-16 84 views
0

我已經構建了一個Java Web應用程序,並將它打包在一個.war文件中,並在我的本地tomcat服務器上進行了測試,並且運行良好。Java - 部署Web應用程序的問題

但是,當我將它部署在我的客戶端的服務器上時,它顯示錯誤。根據遠程服務器(我的客戶端的服務器),它沒有找到一個打包在我放在WEB-INF/lib目錄中的jar文件中的tld文件。但是當我檢查了jar文件的WEB-INF/lib目錄時,我發現它在那裏。

META-INF/MANIFEST.MF內容如下:

Manifest-Version: 1.0 
Class-Path: 

我認爲沒有必要明確提及WEB-INF/lib目錄的類路徑,因爲它是在默認情況下,任何Web應用程序的類路徑。

然後,當我在遠程服務器上部署它時爲什麼服務器無法在lib目錄中找到該jar文件,以及爲什麼當我在本地服務器上部署相同的應用程序時它仍在工作。

我在Struts 1 - struts-taglib.jar is not being found by my web application上發佈了一個問題,但發現問題並不常見,因爲沒人能回答。

所以我的問題如下:

Q1。如果我將類路徑條目留空,如上面MANIFEST.MF文件中所示,或者我應該從文件中完全刪除類路徑條目,或者我應該明確地輸入Class-Path: /WEB-INF/lib作爲類路徑條目,那麼WEB-INF/lib仍然保留在類路徑中? Q2302。我有JSP頁面,Servlet和Web應用程序中的一些幫助程序類。 Jsp頁面位於根。 Servlet和幫助類位於WEB-INF/classes文件夾中。所以如果我的幫手類位於WEB-INF/classes文件夾中,是否有任何問題?

注意:請注意,這個問題是不同於我以前的問題。這是我上一個問題的後續問題。

這兩個服務器(本地和遠程)都是tomcat服務器。

+0

先給發生類路徑顯式。 – Zaki 2010-03-16 06:55:50

+2

經典之一,「我發誓它在我的機器上工作」的問題:) – medopal 2010-03-16 07:06:01

+1

@medopal這裏沒有什麼好笑的...不張貼無用的評論 – 2010-03-16 07:25:20

回答

1

不要在清單中創建一個空的Class-Path條目,只要刪除它!通常情況下,你不需要在webapp中輸入任何Class-Path條目。這個條目對於可運行的罐子更爲常見。

你的助手類沒有問題。 WEB-INF/classes始終是類路徑的第一個條目,後跟WEB-INF/lib的jar。因此,由容器編譯的JSP應該沒有使用其中包含的類的標記。

您是否已將您的taglib包含在web.xml中並附帶適當的taglib-location

+0

所有這些都是正確的。我會補充一點,我相信.tld文件屬於WEB-INF,而不是WEB-INF/lib。 – 2010-03-16 12:01:37

-1

這尤其是在生產,如果標籤庫,位置指向互聯網位置(即以http)和生產箱可能無法訪問互聯網(由於許多防火牆限制)

+0

顯然有人已經低估了一個類似的建議,但我確信我曾經遇到過這個問題,曾經用spring&activemq-core-5.2.0.jar來驗證模式元素。這個jar包含入門HTTP \一個spring.schemas文件://activemq.apache.org/schema/core/activemq-core.xsd=activemq.xsd(表示春天在哪裏可以找到XSD文件),但我已經把模式URL錯誤地爲.../ActiveMQ的核心 - 5.2.0.xsd – 2010-03-16 10:10:17

+1

uri屬性的URL值並不意味着服務器有訪問互聯網找到TLD文件。 Tld文件有自己的uri,需要與taglib指令的uri匹配才能包含 – 2010-03-16 10:32:46