Ich habe eine Anwendung als JAR-Datei mit vielen Abhängigkeiten. Aus irgendeinem Grund muss ich eine der Bibliotheken dekompilieren und mit Eclipse öffnen. Gibt es für eine bestimmte Schnittstelle im Projekt eine Möglichkeit, die Klasse (n) zu finden, die sie implementiert? Es kann sein, dass die Schnittstelle in einer anderen Bibliothek implementiert wurde, die ich noch nicht dekompiliert habe. Ist es möglich, dies für diese Art von Klassen zu tun?
88
Versuchen Sie Ctrl+, Tnachdem Sie den Klassennamen ausgewählt haben. sollte in Java Perspective funktionieren.
quelle
Sie können für das Element "Typhierarchie anzeigen" (Rechtsklick, um diese Option auszuwählen, oder drücken, F4wenn das Element markiert ist) *.
Dies listet jedoch nur Elemente in den Projekten auf, auf die verwiesen wird ("abhängig"). Nicht bei anderen.
Wenn Sie also ein JAR dekompiliert haben und es ein anderes JAR gibt, das Sie nicht dekompiliert haben, werden die Implementierungen (der Schnittstelle) in diesem JAR nicht aufgelistet.
Angenommen, Sie haben ein JAR als Projekt dekompiliert, und es gibt ein anderes Projekt, das sich auf das JAR bezieht, und nicht auf das dekompilierte Projekt. Implementierungen in diesem JAR werden ebenfalls nicht aufgelistet.
Sie müssen also alle Jars dekompilieren und als Projekte hinzufügen (und Referenzen über "Java Build Path" hinzufügen), um sicherzustellen, dass alle Implementierungen in den Jars Ihrer Wahl aufgelistet sind.
* Schnelltyp Hierarchie, ctrl + T zeigt eine ähnliche Struktur in einem Tooltip / Autocomplete-Panel. Die vollständige Typhierarchie ist jedoch für die Art der Analyse, die Sie durchführen möchten, nützlicher.
quelle
In der Java-Suche gibt es das Optionsfeld "Implementierer".
quelle
Oder klicken Sie mit der rechten Maustaste und wählen Sie
Quick Type Hierarchy
ein Pulldown-Menü zum Erweitern von Schnittstellen und Implementieren von Klassen aus.quelle
Strg + H (Suchoption) Öffnen Sie die Java-Suchperspektive, geben Sie den Schnittstellennamen ein, klicken Sie auf das Optionsfeld Implementierer, und Sie finden heraus, welche Klassen eine bestimmte Schnittstelle implementieren. Gleich wie die Antwort vom Stapelaustauscher oben
quelle
Wählen Sie den Klassennamen und dann 'F4' in Eclipse (Windows-Umgebung).
quelle