2011-04-13 55 views
1

在不同文件夾(窗口)中的大量jar文件組中找到一個類的建議方法是什麼? 目前我使用editplus搜索,這似乎很棒。但也許我錯過了一個更好的方法?
謝謝。
編輯 我需要找到它不是編程式。在一大羣罐子裏找到一個特定的類

+1

是你試圖以編程的方式做到這一點,或者只是在你選擇的文件瀏覽器/編輯器中? – 2011-04-13 16:02:11

+3

如果你使用Eclipse,你可以在eclipse中做Ctrl + T – 2011-04-13 16:02:19

+0

'CTRL + SHIFT + T'。 – Bozho 2011-04-13 16:13:18

回答

1

嘗試cf.jar

Usage: 

    java -jar cf.jar SEARCH [DIRECTORY] [OPTIONS]... 

Searches all JAR files in the current directory and its sub-directories for 
entries matching the SEARCH argument. If DIRECTORY is provided, searching will 
be done in that location instead of the current directory. 

SEARCH: 

    A search string containing the class name (entry name). Wild card (*) is 
    supported. Package separator can be either of `/', `\' or `.'. 

    Examples: 

    java.lang.String 
    java/util/ArrayList 
    java/lang/Str*B*er 

    If non ".class" entries also need to be searched, option -a (--all-types) 
    should be specified. Please see the OPTIONS section for a more detailed 
    explanation. 

DIRECTORY: 

    If this is not provided, current directory and all its sub-directories will 
    be used for performing the search. However, if this argument is provided, 
    the same and its sub-directories will be used as the location to fetch JAR 
    files from. 

    If a recursive scan is not needed, option -s (--shallow) can be specified. 

OPTIONS: 

    -h   --help 
        Shows this help 
    -o [path] --redirect-output 
        Redirect output to a file path supplied. 
    -x [x1,x2] --archive-extensions 
        Extensions in addition to the default ".jar". Comma or space 
        separated list accepted. 
    -i   --insensitive-case 
        Case insensitive search. 
    -q   --quiet 
        Silent search without the progress bar animation. 
    -a   --all-types 
        Removes the filtering on ".class" types so that other types 
        such as ".properties", ".xml", etc can also be searched for. 
    -s   --shallow 
        Performs a shallow search. Doesn't recurse. 

Examples: 

    java -jar cf.jar org/apache/log4j/Level D:\Frameworks 
    java -jar cf.jar *OracleDriver C:\oracle -x jar,zip 
    java -jar cf.jar messages.properties D:\IBM\WebSphere -a -x jar,war,ear 
    java -jar cf.jar util.* D:\Java -i -q 
+0

不錯。我會嘗試 。 – Jeb 2011-04-14 07:49:24

1
jars=/opt/java/jre/lib/ext/mail.jar:/opt/java/jre/lib/ext/postgresql.jar 
for jar in $(echo $jars | sed 's/:/ /g'); do 
    jar -tf $jar | grep Driver && echo $jar 
done 

對於Windows,請替換:with;在「罐子」 - 可變和sed命令。 sed是gnu工具的一部分 - 它們有一個二進制win32端口,它包含grep,sed,sh.exe和更多有用的工具。

將驅動程序替換爲%1以使其成爲可參數化的腳本。

1

我會使用在線搜索工具,如

+0

謝謝。雖然我的意思是在m本地硬盤上搜索,但它仍然有用 – Jeb 2011-04-14 07:50:45

+0

@ user450602我知道這對你的具體問題並不是一個好答案,但作爲其他人的參考,這是一個有效的答案 – 2011-04-14 10:16:51

1

由於您使用的IntelliJ您可以導航到該班問題(Go To - > Class ...)和t母雞在項目視圖中顯示(Alt-F1 - >項目視圖)。

+0

不知道。謝謝。 – Jeb 2011-04-14 07:49:42

0

如果你已經有罐子,我建議使用JD GUI

只需打開罐子(將所有罐子拖放到UI中),然後按CTRL + SHIFT + T.輸入類名,並獲得該類所在的所有jar的列表。

如果您知道類名,但不是jar,請使用搜索maven工具。 http://search.maven.org/

對於商業客戶,我通常使用maven。我建立了一個inora nexus存儲庫,然後使用它的搜索。

如果該項目是建立在Eclipse,使用Ctrl + Shift + T,然後鍵入類名

如果該項目是在IntellJ,用CTRL + N和輸入類名

相關問題