2008-11-08 8 views
19

Dada una clase, org.eclipse.ui.views.navigator.ResourceNavigator por ejemplo, ¿cómo averiguo qué archivo jar debo usar? Sé que está en org.eclipse.ui.ide, pero ¿cómo lo descubriría?Java: ¿Cómo puedo saber qué archivo jar usar dado un nombre de clase?

Editar: Gracias a todos los que respondieron. Como muchas cosas, parece que hay varias formas de despellejar a este gato. Deseo que javadoc contenga esta información. Hasta el momento estos son los diferentes métodos:

  1. sin Internet, Eclipse o NetBeans:

    for f in `find . -name '*.jar'`; do echo $f && jar tvf $f | grep -i $1; done 
    
  2. Si desea averiguar localmente utilizando Eclipse:

  3. Si desea averiguar a través de Internet o que no tienen el frasco aún:

+0

uf! Una manera tan fea de hacer eso. Prefiero: para f en $ (buscar. -name * .jar); hacer eco $ f && jar tvf $ f | grep -i $ 1; hecho – Eldelshell

+0

Es bueno que prepare un resumen de las respuestas. @Ubersoldat, ¿por qué es tan feo? – luiscolorado

+0

Odio esas desagradables citas. Soy español y no los utilizamos para nada, excepto cuando hacemos algo mal. Además, son muy difíciles de leer. Es por eso que prefiero $ (algo) – Eldelshell

Respuesta

14

también tiene este eclipse plugin: jarclassfinder

El usuario ingresa el nombre de la clase no encontrada (o el nombre de la clase a la que el proyecto Java necesita acceder). El complemento buscará en el directorio seleccionado (y en los subdirectorios) los archivos JAR que contengan esa clase.

Todos los resultados se muestran en una tabla en una vista personalizada. El usuario puede navegar por esta tabla y seleccionar el archivo JAR para agregar a la ruta de compilación de su proyecto Java.Luego, el usuario hace clic con el botón derecho en la entrada de la tabla y, desde el menú contextual, selecciona la ruta de compilación a la que desea agregarla.


actualización de 2013, como menciono en "searching through .jar files eclipse", ya no se mantiene, y las alternativas son escasas.

Como sunleo comentarios below:

con Eclipse, CTFL + Shift + T sigue siendo el más fácil alternativa a buscar un tipo
(con el nombre del jar que aparece en la barra de estado)


user862268 comentarios: below

para Mac, es cmd +cambio + T en Eclipse para encontrar la clase y el tarro asociado.

+3

Gracias a IBM este enlace ahora está roto ... –

+1

@Kevin: cierto, parece que ya no puedo encontrarlo. – VonC

+0

mejor verificar con la respuesta a continuación mencionada como "ir a Ctrl + Shift + T" en Eclipse para encontrar. – sunleo

1

Por lo general, hago jar -vtf foo.jar para obtener una lista de todos los archivos de clase.
No es la manera más práctica, pero útil. Puedes combinar el resultado con grep, por supuesto.

+0

Esto te ayudará a obtener de JAR -> clase, pero no al revés, que es lo que él preguntó ... –

+0

¿Lo sentimos? Mi método muestra si una clase está en un jar, que es más o menos lo que se pide, si te tomas el tiempo para explorar todos los frascos de tu proyecto. Usar for como k3andme muestra ayuda, por supuesto. – PhiLho

+0

Si tiene 1 archivo de clase para encontrar en 1000 JAR, tiene un problema ... (Y esto no es inusual, en mi lugar de trabajo trabajo con miles de JAR) –

2

Utilice un localizador de clase/JAR:

http://classlocator.sourceforge.net/

[EDIT] No es obvio, incluso de documentos de ClassLocator pero parece que hay un plugin para Eclipse (!).

16

Si tiene el jar en su camino de clase/ruta del proyecto presione CTRL-SHIFT-T y escriba el nombre ... el jar se mostrará en la parte inferior.

Si no tiene la clase en su ruta de compilación a) elaborar un proyecto ficticio que contiene todos los frascos b) Creo que hay un plugin para encontrar tarros de IBM alphaWorks (pero que podría ser un poco anticuado)

+1

Ctrl + Shift + T? En que programa? ¿Qué sistema? – PhiLho

+1

@PhiLho en Eclipse. Con eso fue etiquetada la pregunta original. –

+0

@KonstantinNaryshkin Doh! por perderlo, -1 en la publicación original para solo confiar en las etiquetas, falta para indicarlo en el título o el mensaje en sí. Dado que la mayoría de las respuestas aquí están fuera de Eclipse, no soy el único que se ha perdido eso. (¿O creíamos que solo era para encontrar clases de Eclipse?) Las respuestas genéricas son útiles de todos modos. Notas al margen: gracias por responder mi pregunta (mejor tarde que nunca); y dar una respuesta con un atajo de teclado es un poco frágil, ya que uno puede cambiarlos (sí, pero no esta, sin embargo). Aquí, es el acceso directo para la funcionalidad Open Type. – PhiLho

7

Para responder a la pregunta, no hay una forma real de saber qué jar utilizar. Las diferentes versiones tendrán un comportamiento potencialmente diferente.

Cuando se trata de localizar un frasco que contiene una clase dada, que utilizo:

for f in `find . -name '*.jar'`; do echo $f && jar tvf $f | grep -i $1; done 

Esto pondrá de relieve cualquier frasco que contiene el nombre de clase pasado como un parámetro en cualquier subcarpeta.

Otra buena forma de encontrar una clase es usar the maven repos search.

0

No estoy seguro de que realmente entiendo la pregunta, pero si está buscando verificar que su clase está realmente en el contenedor, siempre puede mirar a través del contenedor en sí, y para eso no necesita ninguna Complementos de Eclipse o aplicación externa especializada.

Los archivos JAR (Java ARchive) no son más que ZIP archivos. Todo lo que tienes que hacer es descomprimir el contenedor, o incluso verlo usando una aplicación de lectura de zip. En Windows XP, por ejemplo, esto viene integrado en el sistema operativo. Que conveniente.

Espero que esto ayudó ...

Yuval = 8-)

+1

A veces, no es evidente qué archivo jar contiene la clase que le interesa. –

2

utilizo FindJar.com. ¡Enumera todos los paquetes conocidos que contienen una clase determinada! Es increíblemente útil.

+0

No encontró org.eclipse.ui.views.navigator.ResourceNavigator. http://www.jarfinder.com/ trabajado. –

+0

oracle.jdbc.driver.OracleDriver jarfinder no lo encontró y findjar lo hizo. – Kieveli

1

En Intellij IDEA, solo haga clic en el nombre de la clase y se moverá al código fuente pseudo de esa clase, y el título de la ventana será como c: \ ruta \ a \ lib.jar! \ Com \ algo \ ClassName.class

0

También puede probar Jarvana para encontrar los archivos JAR para una clase particular.

3
**shell> find . -name "*.jar" | xargs -i -t \jar tvf {} | grep [TheClassNameYouAreLookingFor]** 

Por ejemplo, si usted está buscando un LogFactory.class clase en la lista de campos comunes frascos de Apache, por debajo de comandos funcionaría

shell> find apache-commons/ -name "*.jar" | xargs -i -t \jar tvf {} | grep LogFactory.class 

jar tvf apache-commons/commons-beanutils-1.7.0.jar 

jar tvf apache-commons/commons-fileupload-1.2.1.jar 

jar tvf apache-commons/commons-lang-2.3.jar 

**jar tvf apache-commons/commons-logging-1.1.jar** 

**21140 Tue May 09 23:08:12 EDT 2006 org/apache/commons/logging/LogFactory.class** 

jar tvf apache-commons/commons-net-1.3.0.jar 

El resultado anterior indica que el partido es commons-logging- 1.1.jar

9

ir a Ctrl + Shift + T en Eclipse IDE

de diálogo abierto Tipo aparece donde se introduce el nombre de la clase. después de que se muestren el identificador del paquete y el destino del contenedor.

+1

Gracias por recordar esta buena y vieja :) – Pavan

0

Voto por CTRL-SHIFT-T porque ya está incluido en Eclipse. En realidad me cayó jarclassfinder.jar en los plugins dir dentro de la instalación de Eclipse, pero todavía no pude encontrar el plugin en Eclipse GUI

4

Para mí esto funciona bien:

find * -type f -name '*.jar' -exec grep -l 'TestClass.class' '{}' \; 

Saludos

0

si le dice eclipse para abrir una declaración (F3) o implementación (Navegar-> Abrir implementación) y aparece en una ventana de edición no editable, puede ver la ruta al archivo jar haciendo clic derecho en la ventana del editor y seleccionando 'mostrar en breadcrumbs '

mi encontrar UNIX basado en: archivo de salida

find . -name "*.jar" -print -exec jar -tf {} \; >outputfile 

de edición para encontrar lo que quiere (en lugar de grep)

Cuestiones relacionadas