Java: come faccio a sapere quale file jar usare dato un nome di class?

Data una class, org.eclipse.ui.views.navigator.ResourceNavigator per esempio, come faccio a sapere quale file jar utilizzare? So che è in org.eclipse.ui.ide, ma come lo scoprirò?

Edit : Grazie a tutti voi che avete risposto. Come molte cose, sembra che ci siano diversi modi per scuoiare questo gatto. Vorrei che javadoc contenesse queste informazioni. Finora qui ci sono i diversi metodi:

  1. Senza Internet, Eclipse o NetBeans:

    for f in `find . -name '*.jar'`; do echo $f && jar tvf $f | grep -i $1; done 
  2. Se vuoi scoprire localmente usando Eclipse:

    • Plug-in JAR Class Finder
    • Plug-in Locator di class
  3. Se vuoi scoprire da Internet o non hai ancora il barattolo:

    • jarFinder
    • findjar.com

Hai anche questo plugin di eclipse: jarclassfinder

L’utente inserisce il nome della class non trovata (o il nome della class a cui il progetto Java deve accedere). Il plug-in cercherà la directory (e le sottodirectory) selezionate per i file JAR contenenti quella class.

Tutti i risultati vengono visualizzati in una tabella in una vista personalizzata. L’utente può quindi sfogliare questa tabella e selezionare il file JAR da aggiungere al percorso di generazione del suo progetto Java. L’utente quindi fa clic con il pulsante destro del mouse sulla voce nella tabella e, dal menu di scelta rapida, seleziona il percorso di generazione a cui aggiungerlo.


Aggiornamento 2013, come menzionato in ” ricerca attraverso file .jar eclipse “, non viene più mantenuto e le alternative sono scarse.

Come sunleo commenta qui sotto :

con Eclipse, Ctfl + Shift + T rimane l’alternativa più semplice per cercare un tipo
(con il nome del jar visualizzato nella barra di stato).


commenti utente862268 di seguito :

Per mac, è cmd + shift + T in Eclipse per trovare la class e il jar associato.

Se hai il jar nel percorso della class / percorso del progetto, premi CTRL-SHIFT-T e digita il nome … il barattolo verrà visualizzato nella parte inferiore.

Se non hai la class nel tuo percorso di costruzione a) metti insieme un progetto fittizio contenente tutti i vasi b) Penso che ci sia un plugin per trovare i file da IBM Alphaworks (ma potrebbe essere un po ‘obsoleto)

vai per Ctrl + Shift + T in Eclipse IDE

Viene visualizzata la finestra di dialogo Apri tipo in cui inserisci il nome della class. dopo che l’identificatore del pacchetto e la destinazione del jar vengono visualizzati.

Per rispondere alla domanda, non esiste un modo reale per sapere quale jar usare. Versioni diverse avranno un comportamento potenzialmente diverso.

Quando si tratta di localizzare un barattolo che contiene una determinata class, io uso:

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

Ciò evidenzierà qualsiasi jar contenente il nome class passato come parametro in qualsiasi sottocartella.

Un altro buon modo per trovare una class è usare la ricerca di repository Maven .

Per me questo funziona bene:

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

Saluti

Usa questo: plugin netbeans

Oppure servizio jarFinder

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

Ad esempio, se stai cercando una class LogFactory.class nell’elenco dei jar di apache commons, il comando di sotto funzionerà

 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 

Il risultato sopra indica che la corrispondenza è commons-logging-1.1.jar

Utilizzare un localizzatore di class / JAR:

http://classlocator.sourceforge.net/

[EDIT] Non è ovvio, nemmeno dai documenti di ClassLocator (!), Ma sembra essere un plugin Eclipse.

Io uso FindJar.com . Elenca tutti i pacchetti noti che contengono una determinata class! È incredibilmente utile.

Di solito, faccio jar -vtf foo.jar per ottenere un elenco di tutti i file di class.
Non nel modo più pratico, ma a portata di mano. Puoi combinare il risultato con grep, ovviamente.

In Intellij IDEA devi solo fare clic sul nome della class e cederemo al codice sorgente pseudo di quella class, e il titolo della finestra sarà come c: \ path \ to \ lib.jar! \ Com \ something \ ClassName. class

Non sono sicuro di aver capito bene la domanda, ma se stai cercando di verificare che la tua class sia realmente nel barattolo, puoi sempre guardare attraverso il barattolo stesso, e per questo non hai bisogno di alcun plugin Eclipse o specializzato applicazione esterna.

I file JAR (Java ARchive) non sono altro che file ZIP . Tutto quello che devi fare è decomprimere il jar, o anche visualizzarlo utilizzando un’applicazione di lettura zip. In Windows XP, ad esempio, questo viene integrato nel sistema operativo. Quanto conveniente.

Spero che questo abbia aiutato …

Yuval = 😎

Controlla anche http://javacio.us/ .

Plugin IntelliJ IDEA (Class Hunter)

Puoi anche provare Jarvana per trovare i file jar per una particolare class.

Io voto per CTRL-SHIFT-T perché è già incluso in Eclipse. In realtà ho eliminato jarclassfinder.jar nella directory dei plugin all’interno dell’installazione di eclipse, ma non sono riuscito a trovare il plug-in nella GUI di Eclipse

se comunichi a Eclipse di aprire una dichiarazione (F3) o un’implementazione (Naviga-> Apri implementazione) e entri in una finestra di modifica non modificabile, puoi vedere il percorso del file jar facendo clic con il pulsante destro del mouse sulla finestra dell’editor e scegliendo ‘mostra nei pangrattato’

il mio trovare unix basato:

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

modifica il file di output per trovare quello che vuoi (invece di grep)