2013-06-03 37 views
1

我有一個Java解決方案,需要在我的類路徑中包含servlet-api.jar如何在我的Java解決方案中包含servlet-api.jar?

如果我將我的tomcat文件夾中的servlet-api.jar複製到項目文件夾,但是當我升級到Java7時,servlet-api.jar是一個新版本,需要替換。

無論如何我可以解決這個問題嗎?我不認爲我可以直接將它直接指向我的本地開發機器上的我的tomcat文件夾...

+0

你根本不應該。重複的[如何在我的Eclipse項目中導入javax.servlet API?](http://stackoverflow.com/questions/4076601/how-do-i-import-the-javax-servlet-api-in-my -eclipse-project) – BalusC

+0

你的問題不清楚,你有任何錯誤/消息? – A4L

+1

@BalusC:如果僅使用Eclipse來編譯項目,此工作正常,但如果使用真正的構建工具,相應的servlet api jar必須以某種方式位於類路徑中,並且如果像Gradle,Ivy或Maven這樣的依賴管理工具沒有使用,該jar應該在項目中。只是不在部署的戰爭中。 –

回答

2

問題不在於選擇Java 7與其他版本的JDK。問題是:你想在你的webapp中使用哪個版本的servlet API規範。當然,這種選擇也會影響您可以使用的servlet容器。例如,如果您選擇servlet 3.0,則必須使用Tomcat 7,而不是Tomcat 6.

因此,首先選擇要使用的API版本(以及容器),然後添加相應的jar到你的項目中,並在你的類路徑中使用這個jar來構建。只要確保不要將此jar文件添加到已部署的webapp的WEB-INF/lib文件夾中。該jar只能用於編譯。在運行時,容器已經在它自己的類路徑中有這個jar。

+0

我希望網站能夠在安裝了Tomcat 6或7的服務器上工作。在我的web應用程序中是否可以不包含jar? – daniely

+0

您部署的webapp **絕不**包含jar文件。你只能用它來編譯你的應用程序(我認爲這很清楚,因爲它已經在我的答案中大寫了,所以我在這裏用粗體重複)。由於您希望能夠在Tomcat 6上部署應用程序,因此請使用隨Tomcat 6一起提供的servlet-api.jar來編譯您的應用程序。 API和Tomcat是向後兼容的,所以你的應用可以在Tomcat 7上正常運行。 –

0

我不喜歡讓servlet api jar來滿足ant構建。假設我們從Tomcat 6.0.42遷移到6.0.43或7.x.x.還是Glassfish。 有人必須確保從tomcat安裝中獲得最新的jar並將其替換到項目中。

重命名servlet-api.jarservlet-api-tomcat-6.0.42.jar可能是一個解決方案。它還可能會向開發人員表明,在更改Web容器時必須更換它。 有更清潔的解決方案嗎?

相關問題