2011-09-30 70 views
7

在我的兩個jar文件下有一個類文件TagAttributeInfo如何優先考慮eclipse classpath中的jar文件?

j2ee-6.1.jar,servlet-api-2.3.jar . 

現在我需要一個類從j2ee-6.1.jar被稱作但在運行時,它走的是類servlet-api-2.3.jar,這是我不想要的。 任何人都可以幫助我在課程路徑中優先考慮jar文件,這樣我會優先考慮j2ee-6.1.jar

回答

13

您移動它在類路徑順序(右鍵單擊該項目,選擇構建路徑,其次是配置構建路徑,然後排序和導出)

3

它將使用它在類路徑中找到的第一個包含它正在查找的類的jar。所以你可以通過將jar放在類路徑的開頭來優先考慮你的類。

如何在Eclipse中做到這一點我不確定,但可能有一些與類路徑上的jar對應的項目依賴關係列表,並且希望您可以對列表中的元素進行排序並將jar放在頂端。嘗試在項目設置面板中查找它。

1

我不知道它是否是規範的一部分,但是當我在過去完成此操作時將較早的「較高」優先級的jar放在類路徑中。

1

你確定你需要兩個jar文件?

無論如何,在Build Path對話框中,您可以指定要搜索的jar文件的順序。

6
  • 進入你的項目屬性>構建路徑
  • 訂單和出口標籤,發現j2ee-6.1.jar並按最多按鈕來移動它上漲的類路徑順序。繼續按向上,直到它高於servlet-api-2.3.jar
  • 最後按OK
3
  1. 刪除servlet-api-2.3.jar,你不需要它。
  2. 或者移動j2ee-6.1.jar比lib列表中的servlet-api-2.3.jar更高。
1

只有其中一個jar包應該放在你的類路徑中,以便能夠編譯你的類。但是在運行時,jar會存在於你的應用程序服務器類路徑中,並且你將無法用另一個替換它。

如果你的容器是一個JEE6容器,那麼它使用servlet 3.0,並且servlet-api-2.3.jar已經過時,不應該在類路徑中。如果您的容器只支持servlet api 2.3,那麼您將無法使用此容器中jee6 jar的類。