web-dev-qa-db-fra.com

Java: Comment savoir quel fichier jar utiliser avec un nom de classe?

Étant donné une classe, org.Eclipse.ui.views.navigator.ResourceNavigator par exemple, comment savoir quel fichier jar utiliser? Je sais que c'est dans org.Eclipse.ui.ide, mais comment pourrais-je le découvrir?

Edit : Merci à tous ceux qui ont répondu. Comme beaucoup de choses, il semble y avoir plusieurs façons de peler ce chat. Je souhaite que javadoc contienne cette information. Jusqu'à présent, voici les différentes méthodes:

  1. Sans Internet, Eclipse ou NetBeans:

    for f in `find . -name '*.jar'`;  do echo $f && jar tvf $f | grep -i $1; done
    
  2. Si vous voulez savoir localement en utilisant Eclipse:

  3. Si vous voulez savoir par Internet ou si vous n'avez pas encore le bocal:

19
Eugene Yokota

Vous avez également ce plugin Eclipse: jarclassfinder

L'utilisateur entre le nom de la classe non trouvée (ou le nom de la classe à laquelle le projet Java doit accéder). Le plug-in va rechercher dans le répertoire sélectionné (et dans les sous-répertoires) les fichiers JAR contenant cette classe.

Tous les résultats sont affichés dans une table dans une vue personnalisée. L'utilisateur peut ensuite parcourir cette table et sélectionner le fichier JAR à ajouter au chemin de génération de son projet Java. L'utilisateur clique ensuite avec le bouton droit de la souris sur l'entrée de la table et, dans le menu contextuel, sélectionne le chemin de génération auquel l'ajouter.


La mise à jour 2013, comme je l’ai mentionné dans " recherche dans les fichiers .jar Eclipse ", n’est plus maintenue et les alternatives sont rares.

Comme sunleo commentaires ci-dessous :

avec Eclipse, Ctfl+Shift+T reste l'alternative la plus simple pour rechercher un type
(avec le nom du pot affiché dans la barre d'état).


ser862268 commentaires ci-dessous :

Pour mac, c'est cmd+shift+T dans Eclipse pour trouver la classe et le jar associé.

16
VonC

Si vous avez le fichier jar dans votre chemin de classe/chemin de projet, appuyez sur CTRL-SHIFT-T et tapez le nom ... le fichier jar sera affiché en bas.

Si vous n'avez pas la classe dans votre chemin de construction A) mettez en place un projet factice contenant tous les fichiers jar . B) Je pense qu'il existe un plug-in pour trouver des fichiers jar dans IBM Alphaworks (mais cela pourrait être un peu démodé)

18
pkliem

optez pour Ctrl + Shift + T dans Eclipse IDE

La boîte de dialogue Ouvrir un type apparaît dans laquelle vous entrez le nom de la classe une fois que l'identifiant du paquet et la destination du pot sont affichés. 

9
arvindwill

Pour répondre à la question, il n’existe aucun moyen réel de savoir quel bocal utiliser. Différentes versions auront potentiellement un comportement différent.

Pour localiser un bocal contenant une classe donnée, j'utilise:

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

Cela mettra en évidence tout fichier jar contenant le nom de la classe transmis en tant que paramètre dans un sous-dossier.

Un autre bon moyen de trouver une classe consiste à utiliser la recherche de dépôts de restes .

8
user28791

Pour moi cela fonctionne bien: 

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

Cordialement

5
user2039378

Utilisez ceci: netbeans plugin

Ou jarFinder service

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

Par exemple, si vous recherchez une classe LogFactory.class dans la liste des fichiers jars communs Apache, la commande ci-dessous fonctionne.

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

Le résultat ci-dessus indique que la correspondance est commons-logging-1.1.jar.

3
user1039322

J'utilise FindJar.com . Il répertorie tous les paquets connus contenant une classe donnée! C'est incroyablement utile.

2
Kieveli

Utilisez un localisateur de classe/JAR:

http://classlocator.sourceforge.net/

[EDIT] Ce n'est pas évident, même à partir de la documentation de ClassLocator (!), Mais cela semble être un plugin Eclipse.

2
Yuval Adam

Dans Intellij IDEA, vous devez simplement cliquer sur le nom de la classe tout en maintenant la touche Ctrl enfoncée. Vous serez alors déplacé vers le pseudo-code source de cette classe. com\quelque chose\ClassName.class

1
Pavel Feldman

Habituellement, je fais jar -vtf foo.jar pour obtenir une liste de tous les fichiers de classe.
Pas le moyen le plus pratique, mais pratique. Vous pouvez bien sûr combiner le résultat avec grep.

1
PhiLho

Je ne suis pas sûr de bien comprendre la question, mais si vous voulez vérifier que votre classe est vraiment dans le bocal, vous pouvez toujours regarder à travers le bocal lui-même, et pour cela, vous n'avez pas besoin de plugins Eclipse ni de logiciels spécialisés. application externe.

Les fichiers JAR (Java ARchive) ne sont rien d’autre que Zip files. Tout ce que vous avez à faire est de décompresser le bocal ou même de le visualiser à l'aide d'une application de lecture Zip. Sous Windows XP, par exemple, cela est intégré au système d'exploitation. Comme c'est pratique.

J'espère que cela a aidé ...

Yuval = 8-)

0
Yuval
0
Ralkie

Je vote pour CTRL-SHIFT-T car il est déjà inclus dans Eclipse. En fait, j’ai abandonné jarclassfinder.jar dans le répertoire plugins de l’installation d’Eclipse, mais je n’ai toujours pas trouvé le plug-in dans l’interface graphique Eclipse.

0
amphibient

Consultez également http://javacio.us/

0
Adi

Vous pouvez également essayer Jarvana pour trouver les fichiers jar d'une classe particulière.

0
winwin

si vous demandez à Eclipse d'ouvrir une déclaration (F3) ou une implémentation (Naviguer-> Ouvrir une implémentation) et que vous tombez dans une fenêtre d'édition non modifiable, vous pouvez voir le chemin d'accès au fichier jar en cliquant avec le bouton droit de la souris sur la fenêtre de l'éditeur et en choisissant 'montrer dans la chapelure'

ma recherche basée sur unix:

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

éditez le fichier de sortie pour trouver ce que vous voulez (au lieu de grep)

0
Geoffrey Ritchey