2010-08-31 105 views
12

我正在處理的項目有大約10個jar文件作爲庫。在其中一個文件的頂部有一個導入語句,如:Java - 如何找出導入來自哪個Jar文件?

import jpe.nar.crat.maker.ObjectMakerFactory; 

有沒有辦法告訴它來自哪個Jar文件?

(我使用NetBeans如果該事項。)

回答

2

您可以使用netbeans的Jar Class Search。我不確定它是否仍然兼容,但值得一試。

1

以編程方式或交互方式?

您可以試試DocJar。在Eclipse控件中單擊該項目將顯示您(編輯面板將顯示源代碼(如果附加)或可用的方法,而包資源管理器將打開樹的類),我會感到驚訝,如果Netbeans不表現在類似莊園。

2

我喜歡JFind非常多:

http://jfind.sourceforge.net/

...它通過尋找到罐子的工作遞歸,內部戰爭,耳內的,等等

如果您纏繞Java啓動程序在shell腳本中,並將其放在PATH上,它將成爲一個非常強大的工具:

Ie找到所有EntityManager類目錄jboss-6.0.0.20100429-M3

$ jfind.sh EntityManager ./jboss-6.0.0.20100429-M3 
Search String: EntityManager 
Windows Search Location: jboss-6.0.0.20100429-M3 

....jjj.jjjjjjjjjjj 
ClassName = javax/persistence/EntityManager.class 
JarName = jboss-6.0.0.20100429-M3\client\hibernate-jpa-2.0-api.jar 
---------------- 


jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj 
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj 
ClassName = org/apache/xerces/impl/XMLEntityManager.class 
JarName = jboss-6.0.0.20100429-M3\client\xercesImpl.jar 
---------------- 

小殼包裝使用Cygwin中:

if [ $# -ne 2 ] 
then 
    echo "Usage: `basename $0` <classname> [<fromDir>]" 
    exit 1 
fi 

echo Search String: $1 
SEARCH_LOCATION=`cygpath -w $2` 
echo Windows Search Location: $SEARCH_LOCATION 

java -jar `cygpath -w $HOME/bin/JFind.jar` "$1" "$SEARCH_LOCATION" 
echo 
4

您是否嘗試過做一個「開放宣言」的類?在Eclipse中,當你這樣做時,它會打開一個窗口,顯示jar的名稱並告訴你這個jar有'No Source Attachment'。我希望NetBeans能夠發生類似的情況。

感謝, [R

1

在Netbeans IDE中: 在您的代碼中,按ctrl-選擇類名稱。在編輯器中出現相關的java文件後(如果你沒有這個類的源代碼,它可能不會顯示太多)。右鍵單擊源窗口中的任意位置,然後選擇「選擇項目」。該類將在其來源的jar中顯示爲突出顯示。

至少早在Netbeans 8.0中就已經開始工作了。