Angenommen, es gibt eine Jar-Datei namens callme.jar
und es befindet sich in mehreren Verzeichnissen,
Wie kann analysiert werden, welche von ihnen zur Laufzeit verwendet wird?
Angenommen, es gibt eine Jar-Datei namens callme.jar
und es befindet sich in mehreren Verzeichnissen,
Wie kann analysiert werden, welche von ihnen zur Laufzeit verwendet wird?
Das ist vielleicht nicht die einfachste Methode, aber Sie könnten sich ansehen, welche Dateien der Prozess geöffnet hat, und daraus den Prozess ermitteln.
Wenn Sie mit Windows arbeiten, können Sie Prozess-Explorer um zu sehen, welche Dateien der Prozess zu einem bestimmten Zeitpunkt geöffnet hat, oder Prozess-Monitor um den Zugriff auf das Dateisystem zu überwachen, während es läuft. Es wird eine Menge Rauschen geben, aber Sie können es von dort aus herausfinden.
Wenn Sie einen Mac verwenden, kann Ihnen der integrierte Activity Monitor eine Liste der geöffneten Dateien anzeigen. Leider kenne ich den Befehl nicht, den Sie unter Linux verwenden würden.
Probieren Sie dieses Stück Code aus:
//Get the System Classloader
ClassLoader sysClassLoader = ClassLoader.getSystemClassLoader();
//Get the URLs
URL[] urls = ((URLClassLoader)sysClassLoader).getURLs();
System.out.println("CURRENT CLASSPATH :");
for(int i=0; i< urls.length; i++){
System.out.println(urls[i].getFile());
}
System.out.println("END OF CLASSPATH");
Es ist nicht so einfach, zu wissen, ob ein Stück Code aus einem JAR verwendet wird, ist nur möglich, wenn Ihr Code, der dieses JAR aufruft, ausgeführt wird (d.h. abgedeckt wird). Bis zu dem Punkt, an dem Ihr Code nicht abgedeckt ist, ist es schwierig zu wissen, ob das JAR auf dem Pfad Ihrer Anwendungsklasse verwendet wird oder nicht.
Für diese müssen Sie möglicherweise rechts gute Junit Testfälle, die Sie gesamten Code abdecken können und dann können Sie Class Dependency Analyzer Tools verwenden.
Es ist eine Art von Versuch und Irrtum. Sie können versuchen, JARs eins nach dem anderen zu entfernen und prüfen, ob die Anwendung funktioniert oder nicht, aber Junit Cases sind die besten Optionen für diese Prüfung.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.