2012-02-02 50 views
4

是否有一個命令行工具可以打開JAR文件並在其中找到一個特定的.class文件?東西會讓我走的目錄樹中搜索該罐(S)有一個特定的類像...是否有一個命令行工具告訴我哪個JAR是一個特定的類

find . -name *jar -exec jaregrep -l "org.bob.PriceListViewUpdate" {} \; 
REST/prices.jar 
v2/REST/prices.jar 

這樣的事情必須存在。我在哪裏得到它?

+0

這並不直接回答你的問題。抱歉。直接,我不知道該怎麼做。但是,你可以看看Apache Maven。出於這個原因,他們的回購結構可能會吸引你。乾杯! – 2012-02-02 00:53:39

+0

@CodyS感謝這個想法,但問題不在於依賴關係,它是一個「這個類在297 JARS中的某處,但哪一個」在遺留代碼庫中。 – 2012-02-02 00:57:37

+1

看看Jarscan和它聲稱它可以做什麼http://www.inetfeedback.com/jarscan/ – 2012-02-02 01:01:14

回答

6

如果你知道該jar文件的目錄,你可以在linux下使用grep。從可疑jar文件上方的目錄運行此命令。它會告訴你哪個jar文件(或多個文件)具有它。當我在JBoss使用的jar混亂中尋找某些東西時,我總是這樣做。

grep -rail --include=*.jar org.bob.PriceListViewUpdate 
+0

嗯,這是「舊學校」,但完成了。謝謝。 – 2012-02-02 01:22:42

+0

美麗,謝謝 – MMacphail 2017-03-29 11:02:11

1

JWhich提供的命令行工具來找到其中包含您正在搜索的資源的jar文件。

1

我用這一個:

#!/bin/sh 

find $1 -name *jar | while read JARFILE 
do 
    COUNT=$(unzip -qq -l "$JARFILE" "$2" | wc -l) 
    if [ $COUNT -gt 0 ] ; then 
      echo "$JARFILE: $COUNT matches" 
    fi 
done 

即:

./findclass.sh workspace-indigo/ org/objectweb/* 

您可以使用包名水珠,但你必須指定用斜槓,而不是fullstops作爲backdraw包名。

0

我想添加TattleTale到這個列表。它是一個生成一個jar列表的詳細HTML報告的工具。

通常用於調試版本衝突。

相關問題