2011-06-30 33 views
1

我正在使用部署到Jetty的Eclipse Indigo開發Java服務器應用程序。現在我試圖使用Spring Security爲應用程序添加身份驗證。我已經添加了如下定義我business-layer-context.xml在Eclipse中使用servlet API

<security:http> 
     <security:intercept-url pattern="/**" access="ROLE_USER" /> 
     <security:http-basic /> 
</security:http> 

現在的問題是,Eclipse的給我這個錯誤:時出錯處理「/MyServer/WEB-INF/business-layer-context.xml」,這是由java.lang.NoClassDefFoundError引起的:javax/servlet/Filter。當我將應用程序部署到Jetty時,它工作得很好,因爲Jetty包含servlet API。
什麼是使Eclipse瞭解應用程序已部署到servlet容器並且API可用的最佳方式?我可以將Jetty servlet JAR添加到Eclipse中的項目構建路徑中,但這需要每個開發人員在Eclipse中配置Jetty的路徑,並且我希望將開發人員特定的配置降到最低。
那麼,有沒有更好的方法來擺脫錯誤?

回答

4

您需要在項目構建路徑中包含servlet-api.jar或實現Java Servlet API的相關JAR。

在Eclipse中,你將需要:

  • 右鍵點擊你的項目,然後單擊 「屬性」。
  • 「Java Build Path」 - >「Libraries」
  • 單擊「添加外部JARS」按鈕並找到servlet-api.jar或任何相關的實現Java Servlet API的jar。

完成後,單擊確定並重新生成項目。該jar可以在Jetty lib文件夾中找到,因爲它運行您的servlet應用程序。

+0

所以我想這意味着沒有更好的方法?在這種情況下,我現在就解決這個問題。不管怎樣,謝謝你。 – Carlos

+0

@Carlos,您不必擔心,因爲您將使用Servlet API接口,而不使用API​​的Jetty實現。 –

+0

我擔心的是在我的構建路徑中會存在對外部文件的依賴關係。 – Carlos

0

將服務器庫添加到您的項目庫並將其添加到classpatH。

+0

我想到的另一種方法,但它聽起來不太吸引人,因爲我需要添加另一個不必要的庫到我的項目,只是爲了滿足Eclipse。 – Carlos