¿Cómo encontrarías un nombre de clase en particular dentro de muchos archivos jar?
(Buscando el nombre real de la clase, no las clases que lo hacen referencia).
¿Cómo encontrarías un nombre de clase en particular dentro de muchos archivos jar?
(Buscando el nombre real de la clase, no las clases que lo hacen referencia).
Respuestas:
Eclipse puede hacerlo, solo crea un proyecto (temporal) y coloca tus bibliotecas en el classpath de proyectos. Entonces puedes encontrar fácilmente las clases.
Otra herramienta, que viene a mi mente, es Java Decompiler. Puede abrir muchos frascos a la vez y también ayuda a encontrar clases.
fuente
Unix
En Linux, otras variantes de Unix, Git Bash en Windows, o Cygwin, utilizar las
jar
(ounzip -v
),grep
yfind
comandos.A continuación se enumeran todos los archivos de clase que coinciden con un nombre dado:
Si conoce la lista completa de archivos Java que desea buscar, puede colocarlos en el mismo directorio utilizando enlaces (simbólicos).
O use
find
(distingue entre mayúsculas y minúsculas) para encontrar el archivo JAR que contiene un nombre de clase dado:Por ejemplo, para encontrar el nombre del archivo que contiene
IdentityHashingStrategy
:Si el JAR podría estar en cualquier parte del sistema y el
locate
comando está disponible:Una variación de sintaxis:
Ventanas
Abra un símbolo del sistema , cambie al directorio (o directorio ancestro) que contiene los archivos JAR, luego:
Así es como funciona:
for /R %G in (*.jar) do
- recorrer todos los archivos JAR, recorriendo recursivamente directorios; almacenar el nombre del archivo en%G
.@jar -tvf "%G" |
- ejecute el comando Java Archive para enumerar todos los nombres de archivo dentro del archivo dado y escriba los resultados en la salida estándar; el@
símbolo suprime la impresión de la invocación del comando.find "ClassName" > NUL
- buscar entrada estándar, canalizada desde la salida del comando jar, para el nombre de clase dado; esto se estableceráERRORLEVEL
en 1 si hay una coincidencia (de lo contrario 0).&& echo %G
- iffERRORLEVEL
no es cero, escriba el nombre del archivo de almacenamiento Java en la salida estándar (la consola).Web
Use un motor de búsqueda que escanee archivos JAR .
fuente
Hace algún tiempo, escribí un programa solo para eso: https://github.com/javalite/jar-explorer
fuente
te da el nombre de la jarra
te da el paquete de la clase
fuente
fuente
jar -tvf
conunzip -l
.Para localizar frascos que coinciden con una cadena dada:
find . -name \*.jar -exec grep -l YOUR_CLASSNAME {} \;
fuente
No conocía una utilidad para hacerlo cuando me encontré con este problema, así que escribí lo siguiente:
fuente
También hay dos utilidades diferentes llamadas "JarScan" que hacen exactamente lo que está pidiendo: JarScan (inetfeedback.com) y JarScan (java.net)
fuente
El script user1207523 funciona bien para mí. Aquí hay una variante que busca archivos jar de forma recusiva usando find en lugar de una simple expansión;
fuente
Siempre he usado esto en Windows y ha funcionado excepcionalmente bien.
Findstr.exe viene estándar con Windows y los parámetros:
Espero que esto ayude a alguien.
fuente
Una
bash script
solución usandounzip (zipinfo)
. Probado enUbuntu 12
.fuente
Para buscar todos los archivos jar en un directorio dado para una clase en particular, puede hacer esto:
o, incluso más simple,
La salida se ve así:
Es muy rápido porque la opción -F significa buscar una cadena fija, por lo que no carga el motor de expresiones regulares para cada invocación grep. Si lo necesita, siempre puede omitir la opción -F y usar expresiones regulares.
fuente
Encontré esta nueva forma
Entonces, esto enumera el jar y la clase si se encuentra, si lo desea, puede dar ls -1 * .jar o ingresar a xargs con el comando find HTH Someone.
fuente
ClassFinder es un programa diseñado para resolver este problema. Le permite buscar de forma recursiva a través de directorios y archivos jar para encontrar todas las instancias de una clase que coincida con un patrón. Está escrito en Java, no en Python. Tiene una buena GUI que lo hace fácil de usar. Y corre rápido. Esta versión está precompilada en un jar ejecutable para que no tenga que compilarla desde la fuente.
Descárguelo aquí: ClassFinder 1.0
fuente
Compruebe JBoss Tattletale ; Aunque nunca lo he usado personalmente, esta parece ser la herramienta que necesita.
fuente
Simplemente use FindClassInJars util, es un programa de swing simple, pero útil. Puede consultar el código fuente o descargar el archivo jar en http://code.google.com/p/find-class-in-jars/
fuente
No estoy seguro de por qué los guiones aquí nunca me han funcionado realmente. Esto funciona:
fuente
Script para encontrar el archivo jar: find_jar.sh
Uso: ./find_jar.sh <directorio de nivel superior que contiene archivos jar> <Nombre de clase para buscar>
Esto es similar a la mayoría de las respuestas dadas aquí. Pero solo genera el nombre del archivo, si grep encuentra algo. Si desea suprimir la salida de grep, puede redirigir eso a / dev / null, pero también prefiero ver la salida de grep para poder usar nombres de clase parciales y encontrar el correcto de la lista de resultados que se muestra.
El nombre de la clase puede ser un nombre de clase simple como "String" o un nombre completo como "java.lang.String"
fuente
Para agregar otra herramienta más ... esta es una herramienta muy simple y útil para Windows. Un archivo exe simple en el que hace clic, le da un directorio para buscar, un nombre de clase y encontrará el archivo jar que contiene esa clase. Sí, es recursivo.
http://sourceforge.net/projects/jarfinder/
fuente
Para encontrar una clase en un grupo de carpetas (y subcarpetas) de JAR: https://jarscan.com/
Ejemplo:
fuente
Puede encontrar una clase en un directorio lleno de jarras con un poco de shell:
Buscando la clase "FooBar":
fuente
Una cosa para agregar a todo lo anterior: si no tiene el ejecutable jar disponible (viene con el JDK pero no con el JRE), puede usar descomprimir (o WinZip, o lo que sea) para lograr lo mismo.
fuente
autopromoción descarada, pero puedes probar una utilidad que escribí: http://sourceforge.net/projects/zfind
Admite los archivos comprimidos / archivos más comunes (jar, zip, tar, tar.gz, etc.) y, a diferencia de muchos otros buscadores de jar / zip, admite archivos zip anidados (zip dentro de zip, jar dentro de jar, etc.) hasta una profundidad ilimitada.
fuente
Un poco tarde para la fiesta, pero sin embargo ...
He estado usando JarBrowser para encontrar en qué jar está presente una clase en particular. Tiene una GUI fácil de usar que le permite navegar a través del contenido de todos los frascos en la ruta seleccionada.
fuente
El siguiente script te ayudará
fuente
Este funciona bien en MinGW (entorno de Windows bash) ~ gitbash
Ponga esta función en su archivo .bashrc en su directorio HOME:
fuente
Grepj es una utilidad de línea de comandos para buscar clases dentro de archivos jar. Soy el autor de la utilidad.
Puedes ejecutar la utilidad como
grepj package.Class my1.jar my2.war my3.ear
Se pueden proporcionar múltiples archivos jar, ear, war. Para uso avanzado, use encontrar para proporcionar una lista de los frascos para buscar.
fuente
Verifique este complemento para eclipse que puede hacer el trabajo que está buscando.
https://marketplace.eclipse.org/content/jarchiveexplorer
fuente
En un entorno Linux, podría hacer lo siguiente:
Donde nombre es el nombre del archivo de clase que está buscando dentro de los frascos distribuidos en la jerarquía de directorios enraizados en dir_base .
fuente
Puedes usar
locate
ygrep
:Asegúrate de correr
updatedb
antes de usarlocate
.fuente