Wie man Abhängigkeiten einer JAR auflistet
gibt es ein tool, das die Liste der third-party "- Pakete" enthalten (Dritten) Klassen, auf die in der JAR ? Lassen Sie uns sagen, dass er erkennen würde, was ist "home" - Paket von der JAR-Datei-definition, und es würde drucken Sie eine Liste der vollqualifizierten Namen von Dritten Klassen bis zu 3. Ebene, wurden die verwiesen wird, innerhalb der JAR.
org.apache.commons
org.apache.maven
javax.servlet.jsp
org.eclipse.persistence
org.apache.jackrabbit
Zweck ist, die ich brauche zu finden, maven Abhängigkeiten für die JAR-Datei und stellen Sie es als maven-Artefakt.
InformationsquelleAutor der Frage lisak | 2010-12-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
JarAnalyzer:
InformationsquelleAutor der Antwort MJB
Gibt es ein neues tool seit JDK 8:
jdeps
https://wiki.openjdk.java.net/display/JDK8/Java+Abhängigkeit+Analyse+Werkzeug
InformationsquelleAutor der Antwort Barry Kelly
Können Sie Folgendes tun (wenn Ihr ein maven-Projekt):
Zeigt es transitive Abhängigkeiten, so dass es sehr nützlich zum Debuggen Abhängigkeit Konflikte.
InformationsquelleAutor der Antwort karthik manchala
Wenn Sie maven (wie ich verstanden), Sie können einfach mit Maven-Dependency-plugin.
Zuerst müssen Sie schreiben ein basic pom.xml mit alle Ihre Gläser haben, kopieren Sie diese Beispiel (ich benutze den Ruhezustand als Beispiel), und ersetzen Sie Ihre Gläser :
dann öffnen Sie das terminal, gehen Sie in den Ordner mit der pom.xml oben und führen Sie diesen Befehl :
mvn dependency:tree
druckt eine Liste der Abhängigkeiten...
oder wenn Sie herunterladen möchten, und kopieren Sie in einen Ordner, der alle Abhängigkeiten führen Sie den folgenden Befehl ein :
mvn dependency:copy-dependencies
finden Sie alle Ihre Abhängigkeiten im Ordner ./Ziel/Abhängigkeiten
InformationsquelleAutor der Antwort obe6
Mein Erster Gedanke war, das könnten Sie tun dies durch die Verwendung einer class-loader der Iteration über alle class Dateien in die jar und reflektion verwenden, um zu analysieren, die für Ihre Abhängigkeiten. Jedoch ist die Klasse nicht eine Methode, die Ihnen sagt, dass diese Informationen. So der nächste Gedanke wäre eine Art bytecode-Analyzer (asm zum Beispiel) , ziehen alle referenzierten Klassen aus einem kompilieren der Klasse.
Vorausgesetzt, dass Sie bekommen könnten diese Informationen das nächste Problem wäre die (back-trace) die Klassen, um die Gläser. In gewissem Sinne würde der einfache Teil sein, weil alles, was Sie würde tun müssen, ist erstellen Sie einen classloader, der für jedes Glas in Ihrem maven-repo, oder ein Verzeichnis, oder wo sind die Gläser, und dann bitten Sie Sie nacheinander in die Hand, wenn die bestimmte Klasse.
Der Fehler in dieser Denkweise ist, dass eine java-Klasse (raw source oder kompiliert) nicht genau, wo man die importierte Klasse aus. Also, wenn Sie zwei Klassen mit dem gleichen Paket und name (passiert öfter, als Sie vielleicht denken), dann wären Sie nicht in der Lage zu sagen, was zu verwenden.
Sogar java einfach davon ausgegangen, dass die erste findet in der Klasse Weg ist der richtige und wirft eine Ausnahme, wenn es sich herausstellt, falsch zu sein (MethodNotFoundException). Also, wenn Sie gehen, um weiter zu analysieren, den bytecode, um herauszufinden, welche Methoden auf die einzelnen Klassen aufgerufen und dann vergleichen Sie diese mit den Klassen in Ihrer Klasse Weg, Sie will immer noch nicht in der Lage, korrekt zu sein.
Kurz, es ist wohl möglich das zu tun, was Sie wollen, aber wahrscheinlich sehr schwierig und zeitaufwendig.
Die Art, wie ich normalerweise beschäftigen sich mit diesem einfach feuern die Klasse in den test-code und halten Sie, hinzufügen von Abhängigkeiten, bis ich es bekommen kann, führen Sie jede Methode, die mich interessiert.
InformationsquelleAutor der Antwort drekka
Tattleltale ist ein tool von JBoss welcher dies
tattletale.jboss.org/
InformationsquelleAutor der Antwort user2492456
Wenn dir ein maven basiertes Projekt
Blick auf den unten stehenden link
http://maven.apache.org/plugins/maven-dependency-plugin/build-classpath-mojo.html
Kann in Ihrem Fall
InformationsquelleAutor der Antwort srinannapa
Könnte dies eine alternative für dieses tool. Aber es nicht in der Liste referenzierten Klassen. Die Letzte Zahl bestimmt "package level".
Problem ist, dass dieser Weg es möglich sein, die referenzierten Klassen aus der Klassen-Definitionen. Also nur So möglich zu sein scheint, tun Sie es in JAVA.
Die Frage ist also: gibt es eine Java tool, das es kann ?
EDIT:
Habe ich gefunden, was ich brauchte : M2eclipse hat eine Funktion namens " Klasse Suche
In den maven-repositories anzuzeigen, der rechten Maustaste auf ein repository und ermöglichen die volle index
Navigieren Sie dann > Öffnen Sie Art von maven - dort können Sie schauen durch alle Artefakte auf Basis von java-Paket-Konvention
InformationsquelleAutor der Antwort lisak