2008-11-08 128 views
19

例如,給定一個類,org.eclipse.ui.views.navigator.ResourceNavigator,如何找出要使用哪個jar文件?我知道它在org.eclipse.ui.ide中,但是我怎麼會發現它呢?Java:如何知道給定類名使用哪個jar文件?

編輯:謝謝大家的回答。像許多事情一樣,似乎有幾種方式來剝皮這隻貓。我希望javadoc包含此信息。到目前爲止,這裏有不同的方法:

  1. 如果沒有互聯網,Eclipse或NetBeans的:

    for f in `find . -name '*.jar'`; do echo $f && jar tvf $f | grep -i $1; done 
    
  2. 如果你想找出本地使用Eclipse:

  3. 如果你想從網上找出來,或者你沒有罐子尚未:

+0

啊什麼!這樣一個醜陋的方式來做到這一點。我更喜歡: for f in $(find。-name * .jar);做echo $ f && jar tvf $ f | grep -i $ 1;完成 – Eldelshell 2009-01-05 10:11:54

+0

很高興您彙總了答案的摘要。 @Ubersoldat,爲什麼這麼醜陋? – luiscolorado 2010-08-17 13:31:25

+0

我討厭那些討厭的引號。我是西班牙人,除非我們做錯了什麼,否則我們不會將它們用於任何事情。另外,他們很難閱讀。這就是爲什麼我更喜歡$(東西) – Eldelshell 2010-08-17 13:59:36

回答

14

你也有這樣的Eclipse插件:jarclassfinder

用戶輸入未找到的類的名稱(或Java項目需要訪問的類的名稱)。插件將搜索選定的目錄(和子目錄)以查找包含該類的JAR文件。

所有結果都顯示在自定義視圖中的表格中。用戶可以瀏覽這個表並選擇JAR文件添加到他的Java項目的構建路徑中。用戶然後右鍵單擊表中的條目,然後從上下文菜單中選擇要添加它的構建路徑。


更新到2013年,我在「searching through .jar files eclipse」何況,它不再保持,並且替代品很少。

由於sunleo評論below

使用Eclipse,CTFL + + 牛逼仍然是最簡單的替代尋找一個類型
(在狀態欄中顯示的罐子名)。


user862268評論below

爲Mac,這是CMD + 轉變 + 牛逼在Eclipse中找到類和相關的罐子。

1

通常情況下,我做jar -vtf foo.jar獲取列表的所有類文件。
不是最實用的方法,但方便。當然,您可以將結果與grep結合使用。

+0

這將幫助你從JAR - >類,但不是相反的方式,這是他問... – 2008-11-08 20:14:48

+0

對不起?我的方法顯示一個班級是否在一個罐子裏,如果你花時間去研究你的項目的所有罐子,這幾乎就是問題所在。當然,使用k3andme顯示會有所幫助。 – PhiLho 2008-11-08 21:06:32

+0

如果您在1000個JAR中找到1個類文件,那麼您遇到了問題......(這並不罕見,在我的工作場所,我使用了數千個JAR) – 2008-11-09 08:25:10

16

如果您在類路徑/項目路徑中打開了CTRL-SHIFT-T並鍵入名稱...該jar將顯示在底部。

如果你還沒有的類構建路徑 一)放在一起包含所有的罐子 B A虛擬項目),我認爲這是一個插件,發現從IBM alphaWorks罐(但可能是一種過時)

+1

Ctrl + Shift + T?在什麼程序中?什麼系統? – PhiLho 2008-11-08 21:00:57

+1

@PhiLho在Eclipse中。這就是原始問題的標籤。 – 2012-04-20 18:34:19

7

要回答這個問題,沒有真正的方法來知道使用哪個jar。不同的版本會有可能不同的行爲。

當談到定位包含給定類罐子,我用:

for f in `find . -name '*.jar'`; do echo $f && jar tvf $f | grep -i $1; done 

這將突出顯示包含在傳遞中的任何一個子參數類名的任何罐子。

查找班級的另一個好方法是使用the maven repos search

0

我不確定我是否真的明白了這個問題,但是如果您希望驗證您的課程是否真的在jar中,那麼您可以始終查看jar本身,因此您不需要Eclipse插件或專門的外部應用程序。

JAR(Java ARchive)文件無非是ZIP文件。你所要做的就是解壓縮jar,甚至使用zip閱讀應用程序來查看它。例如,在Windows XP下,這是內置於操作系統中的。多麼方便。

希望這有助於...

尤瓦= 8-)

2

我用FindJar.com。它列出了包含任何給定類的所有已知包。這非常有幫助。

1

在Intellij IDEA中,您只需按住Ctrl鍵並點擊類名,您將被移動到該類的僞源代碼,並且窗口的標題將像c:\ path \ to \ lib.jar!\ com \東西\ ClassName.class

0

您也可以嘗試Jarvana找到jar文件特定類。

3
**shell> find . -name "*.jar" | xargs -i -t \jar tvf {} | grep [TheClassNameYouAreLookingFor]** 

例如,如果您正在尋找一類LogFactory.class上Apache的百科全書罐子的名單,以下命令將工作

shell> find apache-commons/ -name "*.jar" | xargs -i -t \jar tvf {} | grep LogFactory.class 

jar tvf apache-commons/commons-beanutils-1.7.0.jar 

jar tvf apache-commons/commons-fileupload-1.2.1.jar 

jar tvf apache-commons/commons-lang-2.3.jar 

**jar tvf apache-commons/commons-logging-1.1.jar** 

**21140 Tue May 09 23:08:12 EDT 2006 org/apache/commons/logging/LogFactory.class** 

jar tvf apache-commons/commons-net-1.3.0.jar 

上述結果表明,與之匹配的是公地測井1.1.jar

9

隨時隨地按Ctrl + Shift + T在Eclipse IDE出現

打開類型對話框,輸入類名。之後顯示包標識符和jar目標。

0

我投票支持CTRL-SHIFT-T,因爲它已經包含在Eclipse中。我居然在插件Eclipse的安裝目錄內下降jarclassfinder.jar,但還是沒找到在Eclipse GUI

4

對於我這個插件正常工作:

find * -type f -name '*.jar' -exec grep -l 'TestClass.class' '{}' \; 

問候

0

如果你告訴eclipse打開一個聲明(F3)或實現(Navigate-> Open Implementation),然後彈出一個不可編輯的編輯窗口,右鍵單擊編輯器窗口並選擇「show in麪包屑'

我發現基於UNIX:

find . -name "*.jar" -print -exec jar -tf {} \; >outputfile 

編輯輸出文件,以找到您想要的(而不是grep的)

相關問題