2008-11-08 3 views
19

Zum Beispiel eine Klasse, org.eclipse.ui.views.navigator.ResourceNavigator, wie finde ich heraus, welche JAR-Datei zu verwenden? Ich weiß, dass es in org.eclipse.ui.ide ist, aber wie würde ich das herausfinden?Java: Woher weiß ich, welche JAR-Datei bei einem Klassennamen verwendet werden soll?

Bearbeiten: Vielen Dank an alle von Ihnen, die geantwortet haben. Wie viele Dinge scheint es mehrere Möglichkeiten zu geben, diese Katze zu häuten. Ich wünschte, Javadoc enthält diese Informationen. Bisher sind hier die verschiedenen Methoden:

  1. Ohne Internet, Eclipse oder NetBeans:

    for f in `find . -name '*.jar'`; do echo $f && jar tvf $f | grep -i $1; done 
    
  2. Wenn Sie lokal mit Eclipse, um herauszufinden:

  3. Wenn Sie von Internet, um herauszufinden, oder Sie das Glas noch nicht haben:

+0

wollen igitt! So ein hässlicher Weg, das zu finden. Ich bevorzuge: für f in $ (find. -name * .jar); echo $ f && jar tvf $ f | grep -i $ 1; done – Eldelshell

+0

Es ist schön, dass Sie eine Zusammenfassung der Antworten zusammenstellen. @Ubersoldat, warum ist das so hässlich? – luiscolorado

+0

Ich hasse diese fiesen Back-Zitate. Ich bin Spanier, und wir benutzen sie nicht für irgendetwas, außer wenn wir etwas falsch machen. Außerdem sind sie sehr schwer zu lesen. Deshalb bevorzuge ich $ (etwas) – Eldelshell

Antwort

14

Sie haben auch diese eclipse-Plugin: jarclassfinder

Der Benutzer gibt den Namen der nicht gefundenen Klasse ein (oder den Namen der Klasse, auf die das Java-Projekt zugreifen muss). Das Plug-in durchsucht das ausgewählte Verzeichnis (und die Unterverzeichnisse) nach JAR-Dateien, die diese Klasse enthalten.

Alle Ergebnisse werden in einer Tabelle in einer benutzerdefinierten Ansicht angezeigt. Der Benutzer kann dann diese Tabelle durchsuchen und die JAR-Datei auswählen, die dem Build-Pfad seines Java-Projekts hinzugefügt werden soll.Der Benutzer klickt dann mit der rechten Maustaste auf den Eintrag in der Tabelle und wählt im Kontextmenü den Build-Pfad aus, zu dem er hinzugefügt werden soll.


-Update 2013, als ich in "searching through .jar files eclipse" nennen, wird es nicht mehr aufrechterhalten, und die Alternativen sind spärlich.

Als sunleo Kommentare below:

mit Eclipse, CTFL + Umschalttaste + T bleibt die einfachste Alternative für einen Typ (mit dem jar Name in der Statusleiste
angezeigt aussehen).


user862268 Kommentare below:

für Mac, es ist cmd + Verschiebung + T in Eclipse die Klasse und die damit verbundene Glas zu finden.

+3

Dank IBM ist dieser Link jetzt gebrochen ... –

+1

@Kevin: Wahr, ich kann es nicht mehr finden. – VonC

+0

besser überprüfen mit antwort unten als "gehe für Strg + Shift + T" in Eclipse zu finden. – sunleo

1

Normalerweise ich jar -vtf foo.jar eine Liste zu erhalten aller Klassendateien.
Nicht der praktischste Weg, aber praktisch. Sie können das Ergebnis natürlich mit grep kombinieren.

+0

Dies wird Ihnen helfen, von JAR -> Klasse zu bekommen, aber nicht umgekehrt, was er gefragt hat ... –

+0

Entschuldigung? Meine Methode zeigt an, ob sich eine Klasse in einem Jar befindet, was ziemlich genau der Fall ist, wenn Sie sich die Zeit nehmen, alle Jars Ihres Projekts zu erkunden. Die Verwendung von for as k3andme hilft natürlich. – PhiLho

+0

Wenn Sie 1 Klassendatei in 1000 JARs finden, sind Sie in einem Problem ... (Und das ist nicht ungewöhnlich, an meinem Arbeitsplatz arbeite ich mit Tausenden von JARs) –

2

eine Klasse/JAR-Locator verwenden:

http://classlocator.sourceforge.net/

[EDIT] Es ist nicht offensichtlich, auch von ClassLocator der docs, aber es scheint eine Eclipse-Plugin zu sein (!).

16

Wenn Sie das jar in Ihrem Klassenpfad/Projektpfad STRG-SHIFT-T drücken und den Namen eingeben ... wird das Jar unten angezeigt.

Wenn Sie nicht die Klasse in Ihrem Build-Pfad haben a) zusammen ein Dummy-Projekt alle die Gläser b enthält) Ich denke, es ist ein Plugin Gläser von IBM Alphaworks zu finden (aber das wäre etwas veraltet sein this)

+1

Ctrl + Shift + T? In welchem ​​Programm? Welches System? – PhiLho

+1

@PhiLho In Eclipse. So wurde die ursprüngliche Frage markiert. –

+0

@KonstantinNaryshkin Doh! für das Verpassen von es, -1 auf dem ursprünglichen Post, um nur auf Tags zu vertrauen, fehlt, um das im Titel oder der Nachricht selbst anzuzeigen. Da die meisten Antworten hier nur außerhalb von Eclipse sind, bin ich nicht der Einzige, der das übersehen hat. (Oder wir glaubten nur Eclipse-Klassen zu finden?) Die generischen Antworten sind trotzdem nützlich. Randnotizen: Danke für die Beantwortung meiner Frage (besser spät als nie); und eine Antwort mit einem Tastaturkürzel zu geben, ist ein bisschen brüchig, da man sie ändern kann (ich tue, aber nicht diese). Hier ist es die Abkürzung für die Open Type-Funktionalität. – PhiLho

7

Um die Frage zu beantworten, gibt es keine echte Möglichkeit zu wissen, welches Glas zu verwenden ist. Verschiedene Versionen haben möglicherweise ein anderes Verhalten.

Wenn es darum geht, ein Glas zu lokalisieren, die eine bestimmte Klasse enthält, verwende ich:

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

Dies wird jede Dose markieren den Klassennamen übergeben als Parameter in jedem Unterordner enthält. Eine andere gute Möglichkeit, eine Klasse zu finden, ist the maven repos search zu verwenden.

0

Ich bin mir nicht sicher, ob ich die Frage wirklich verstehe, aber wenn Sie überprüfen möchten, ob Ihre Klasse wirklich im Glas ist, können Sie immer durch das Glas selbst schauen, und dafür brauchen Sie keine Eclipse-Plugins oder spezialisierte externe Anwendung.

JAR (Java ARchive) Dateien sind nichts anderes als ZIP Dateien. Alles, was Sie tun müssen, ist das Zip-Archiv zu entpacken oder es sogar mit einer Zip-Lese-Anwendung anzusehen. Unter Windows XP ist dies beispielsweise in das Betriebssystem integriert. Wie praktisch.

Hope this half ...

Yuval = 8-)

+1

Manchmal ist es nicht offensichtlich, welche JAR-Datei die Klasse enthält, an der Sie interessiert sind. –

2

I FindJar.com verwenden. Es listet alle bekannten Pakete auf, die eine bestimmte Klasse enthalten! Es ist unglaublich hilfreich.

+0

org.eclipse.ui.views.navigator.ResourceNavigator wurde nicht gefunden. http://www.jarfinder.com/ hat funktioniert. –

+0

oracle.jdbc.driver.OracleDriver jarfinder hat es nicht gefunden und findjar hat es getan. – Kieveli

1

In Intellij IDEA klicken Sie einfach auf den Klassennamen und Sie werden in den Pseudoquellcode dieser Klasse verschoben, und der Titel des Fensters wird wie folgt aussehen: c: \ pfad \ zu \ lib.jar! \ Com \ something \ ClassName.class

0

Sie könnten auch Jarvana versuchen, die JAR-Dateien für eine bestimmte Klasse zu finden.

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

Zum Beispiel, wenn Sie für eine Klasse LogFactory.class auf Liste der Apache Commons Gläser suchen, würde unter Befehl arbeiten

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 

Das obige Ergebnis zeigt, dass das Spiel ist commons-Logging- 1.1.jar

9

go für Strg + Umschalt + T in Eclipse IDE

Open Type-Dialog angezeigt, in dem Sie die Klassennamen eingeben. Danach werden die Paketidentifikation und das jar-Ziel angezeigt.

+1

Danke für die Erinnerung an diese gute alte :) – Pavan

0

Ich stimme für CTRL-SHIFT-T, weil es bereits in Eclipse enthalten ist. Ich fiel tatsächlich jarclassfinder.jar in den Plugins dir innerhalb der Eclipse-Installation, aber noch nicht das Plugin in Eclipse GUI

4

Für mich funktioniert das gut finden konnte:

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

Grüße

0

, wenn Sie sagen, Eclipse zum Öffnen einer Deklaration (F3) oder Implementierung (Navigate-> Open Implementation) und Sie gelangen in ein nicht editierbares Edit-Fenster. Sie können den Pfad zur JAR-Datei sehen, indem Sie mit der rechten Maustaste auf das Editor-Fenster klicken und 'Einblenden' wählen Brotkrumen '

Mein finden Unix-Basis:

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

bearbeiten Ausgabedatei zu finden, was Sie (statt grep)