![](/img/trans.png)
[英]For a maven dependency, how to find out which import in which Java class comes from it?
[英]Java - How to find out which Jar file an import comes from?
我正在處理的項目有大約 10 個 jar 文件作為庫。 在其中一個文件的頂部有一個導入語句,如:
import jpe.nar.crat.maker.ObjectMakerFactory;
有沒有辦法判斷它來自哪個 Jar 文件?
(如果重要的話,我正在使用 Netbeans。)
您可以為此使用CodeSource#getLocation()
。 CodeSource
可通過ProtectionDomain#getCodeSource()
。 反過來, ProtectionDomain
可通過Class#getProtectionDomain()
。
URL location = ObjectMakerFactory.class.getProtectionDomain().getCodeSource().getLocation();
System.out.println(location.getPath());
// ...
你有沒有試過在課堂上做一個“開放聲明”? 在 Eclipse 中,當您執行此操作時,它會打開一個窗口,顯示 jar 的名稱並告訴您此 jar 具有“無源附件”。 我希望 NetBeans 也會發生類似的事情。
謝謝,R
我非常喜歡JFind :
...它通過查看罐子、戰爭內部、耳朵內部等遞歸地工作......
如果您將 java 啟動器包裝在一個 shell 腳本中並將其放在您的 PATH 中,它就會成為一個非常強大的工具:
即在目錄jboss-6.0.0.20100429-M3
找到所有EntityManager
類:
$ 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
在 Netbeans IDE 中:在您的代碼中,按住 ctrl 並選擇類名。 在編輯器中出現相關的 java 文件后(如果您沒有該類的源代碼,它可能不會顯示太多)。 右鍵單擊源窗口中的任意位置,然后選擇“在項目中選擇”。 該類將在它來自的 jar 中突出顯示。
這至少可以追溯到 Netbeans 8.0。
您可以對 netbeans 使用Jar 類搜索。 我不確定它是否仍然兼容,但值得一試。
以編程方式還是以交互方式?
你可以試試DocJar 。 在 Eclipse 控件中單擊該項目將顯示您(編輯面板將顯示源(如果附加)或可用的方法,而包資源管理器將打開該類的樹),如果 Netbeans 沒有以類似的方式運行,我會感到驚訝庄園。
我的一位前同事 Tom 編寫了 JarSniffer ( http://sourceforge.net/projects/jarsniffer/ )。 這是一個方便的小工具,可以在一組 jars、zip 和目錄樹中找到一個類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.