Wie analysieren Sie die jar-Datei in ein Java-Programm?
Nehme an, es ist eine jar-Datei namens callme.jar
und befindet sich in mehreren Verzeichnissen,
wie zu analysieren, welche von Ihnen verwendet wird, zur Laufzeit?
Sie analysieren möchten intern von der app aus, oder extern von außerhalb der app?
extern.ansonsten kann ich nur überprüfen classpath.
extern.ansonsten kann ich nur überprüfen classpath.
InformationsquelleAutor omg | 2009-06-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aufrufen der
java
ausführbare Datei mit der-verbose:class
argument. Dies erzeugt eine Ausgabe wie:InformationsquelleAutor matt b
Vielleicht nicht die einfachste Methode, aber du könntest schauen, welche Dateien der Prozess ist offen und bestimmen es aus.
Wenn Sie in windows Sie verwenden könnte Process Explorer um zu sehen, welche Dateien ein Prozess geöffnet hat zu einem bestimmten Zeitpunkt, oder Process Monitor zu beobachten, die Dateisystem-Zugriff, wie es läuft. Es wird eine Menge Lärm, aber Sie könnten es herausfinden von dort.
Wenn du auf dem Mac finde ich den integrierten Activity Monitor kann Ihnen eine Liste der geöffneten Dateien an. Leider weiß ich nicht den Befehl, den Sie verwenden würden, in Linux.
InformationsquelleAutor Herms
Dies würde nur funktionieren, wenn du Kontrolle über den code. Das könnte hier der Fall sein, aber ich bin mir nicht sicher.
InformationsquelleAutor rich
Versuchen, dieses Stück code :
InformationsquelleAutor g andrieu
Ist es nicht so einfach, zu wissen, ob der code aus GLAS verwendet wird, ist nur möglich, wenn im code der Aufruf der jar ausgeführt wird (D. H. bedeckt). Bis zu dem Punkt, Ihr code ist nicht abgedeckt, es schwierig ist zu wissen, ob jar auf Ihre Bewerbung-Klasse-Pfad verwendet wird oder nicht.
Für diese müssen Sie möglicherweise Recht gut junit-Testfälle, die Sie abdecken können Sie die gesamten code und dann können Sie die Klasse Dependency Analyzer-tools.
Ist es irgendwie versuchen und sehen, was. Sie können versuchen, entfernen Gläser eins nach dem anderen und prüfen, ob die Anwendung funktioniert oder nicht, aber junit Fällen sind die besten Möglichkeiten, dies zu tun, Prüfung.
-verbose:class
(nicht mit dependency analyzer noch mit manuell entfernen von jar-E) haben Sie eine gute änderung, auch in komplexen setups wie web-apps, die eine Tiefe Hierarchie von class Loadern mit potenziell laden von benutzerdefinierten Richtlinien.InformationsquelleAutor Avinash Kadam