2011-09-27 11 views
11

Tengo un montón de archivos jar en mi sistema, relacionados con mi aplicación.Cómo encontrar el nombre de clase dentro de un grupo de jarras

¿Cómo puedo encontrar una clase particular en esa gran cantidad de archivos jar?

Gracias

+0

Es posible que desee preguntarle esto en 'superuser.com' lugar –

+0

duplicado Posible> http://superuser.com/questions/285793/finding-which-jars-contain-a-file –

Respuesta

29

Si los archivos jar están en la trayectoria de la estructura de su proyecto Eclipse:

Ctrl-Shift-T (para el "tipo abierto", "tipo", como en "clase") trae un cuadro de búsqueda. Puede CamelType (es decir, SB en lugar de StringBuilder).

+1

No le conviene CTRL + T abre 'Type Hierarchy of" Class "' –

+0

Vaya. Quizás Ctrl-shift-T. Lo siento. – Thilo

+1

Ahora estás en lo correcto. +1. –

2

Usted debe ser capaz de hacer clic derecho sobre el nombre de la clase en un archivo de origen y seleccione uno de los subtemas de la opción de menú Declaraciones contexto - es decir, a la derecha haga clic en el nombre de la clase y seleccione Declaraciones/Proyecto. Esto buscará en el proyecto cualquier declaración de la clase y mostrará la vista de resultados de búsqueda estándar de Eclipse. Supongo que tiene el contenedor como biblioteca en su proyecto de Eclipse.

Si desea hacer esto en el sistema de archivos en su lugar, a continuación, utilizar un bucle for para iterar sobre los archivos JAR y utilizar jar tf FILENAME para obtener la lista de archivos de clase y la tubería que a través de grep o findstr (dependiendo de la plataforma) . Si está utilizando bash, algo como lo siguiente haría el truco:

bash-3.2$ for f in *.jar 
do 
    result=$(jar tf $f | grep '/DBObject.class$') 
    [ -n "$result" ] && echo "$f contains $result" 
done 
mongodb-api-2.6.3.jar contains com/mongodb/DBObject.class 
bash-3.2$ 

Se podría inventar algo similar en Windows utilizando un bucle FOR en un símbolo, pero no recuerdo si FINDSTR establece correctamente el resultado ERRORLEVEL . Lo que sigue debe trabajar no está completamente seguro de la sintaxis:

C:\Directory\Containing\Jars> FOR %I IN (*.jar) DO @(
    FOR /F %J IN ('jar tf %I') DO ECHO "%J: %I" 
) | FINDSTR /R /C:"/DBObject.class$" 
mongodb-api-2.6.3.jar: com/mongodb/DBObject.class 
C:\Directory\Containing\Jars> 

Si recuerdo, voy a editar esto después llego a una máquina Windows.

+0

cualquier posibilidad de búsqueda recursiva (caso de Windows)? –

Cuestiones relacionadas