簡體   English   中英

Java - 如何找出導入來自哪個 Jar 文件?

[英]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

http://jfind.sourceforge.net/

...它通過查看罐子、戰爭內部、耳朵內部等遞歸地工作......

如果您將 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 和目錄樹中找到一個類。

在 Eclipse 中只需按 Ctrl-單擊類名(在導入語句中),然后右鍵單擊 .class 代碼,打開一個對話框,·最后選擇聲明-項目。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM