2010-08-31 23 views
12

El proyecto en el que estoy trabajando tiene aproximadamente 10 archivos jar como bibliotecas. En la parte superior de uno de los archivos que hay una instrucción de importación como:Java - ¿Cómo averiguar de qué archivo Jar proviene una importación?

import jpe.nar.crat.maker.ObjectMakerFactory; 

¿Hay una manera de decir qué archivo JAR viene?

(estoy usando Netbeans si lo que importa.)

Respuesta

2

Puede usar el Jar Class Search para netbeans. No estoy seguro de que todavía sea compatible, pero vale la pena intentarlo.

1

¿Programa o interactivamente?

Puedes probar DocJar. En el control de Eclipse, haga clic en el elemento que le mostrará (el panel de edición mostrará la fuente (si está adjunta) o los métodos disponibles mientras Package Explorer abrirá el árbol a la clase), me sorprendería si Netbeans no se comportara de manera similar señorío.

2

me gusta JFind mucho:

http://jfind.sourceforge.net/

... funciona de forma recursiva mirando dentro de una vasija de, dentro de la guerra, en el interior del oído de, etc ...

Si envuelve el java launcher en un script de shell y poner eso en su PATH, se convierte en una herramienta muy poderosa:

Ie para encontrar todas las clases en el directorio EntityManagerjboss-6.0.0.20100429-M3:

$ jfind.sh EntityManager ./jboss-6.0.0.20100429-M3 
Search String: EntityManager 
Windows Search Location: jboss-6.0.0.20100429-M3 

....jjj.jjjjjjjjjjj 
ClassName = javax/persistence/EntityManager.class 
JarName = jboss-6.0.0.20100429-M3\client\hibernate-jpa-2.0-api.jar 
---------------- 


jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj 
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj 
ClassName = org/apache/xerces/impl/XMLEntityManager.class 
JarName = jboss-6.0.0.20100429-M3\client\xercesImpl.jar 
---------------- 

Una pequeña envoltura del shell para su uso en Cygwin:

if [ $# -ne 2 ] 
then 
    echo "Usage: `basename $0` <classname> [<fromDir>]" 
    exit 1 
fi 

echo Search String: $1 
SEARCH_LOCATION=`cygpath -w $2` 
echo Windows Search Location: $SEARCH_LOCATION 

java -jar `cygpath -w $HOME/bin/JFind.jar` "$1" "$SEARCH_LOCATION" 
echo 
4

Ha intentado hacer una 'declaración abierta' en la clase? En Eclipse, cuando lo hace, abre una ventana que muestra el nombre del contenedor y le dice que este archivo tiene 'No hay datos adjuntos de origen'. Espero que ocurra algo similar para NetBeans.

Gracias, R

1

En Netbeans IDE: En su código, ctrl-seleccione el nombre de la clase. Después de que aparezca el archivo java relevante en el editor (si no tiene el origen para la clase, es posible que no muestre mucho). Haga clic con el botón derecho en cualquier lugar de la ventana de origen y seleccione "Seleccionar en proyectos". La clase se mostrará resaltada en el jarro de donde vino.

Esto ha estado trabajando al menos desde Netbeans 8.0.

Cuestiones relacionadas