Ich muss nur die referenzierten Klassen in einer sehr begrenzten Umgebung wie A data carousel für Interactive TV bereitstellen. Die Bandbreite ist teuer und JAR-Dateien werden nicht unterstützt.Wie kann man feststellen, auf welche Klassen innerhalb einer .jar-Datei verwiesen wird?
Antwort
Auschecken ProGuard das ist ein Obfuscator, der Code und Klassen auflisten wird, die nicht verwendet werden. Die Verschleierung selbst führt normalerweise zu einem kleineren Fußabdruck.
ProGuard ist ein kostenloser Java-Klasse Dateischrumpfer, Optimierer, Obfuscator und Preverifier. Es erkennt und entfernt nicht verwendete Klassen, Felder, Methoden und Attribute. Es optimiert Bytecode und entfernt unbenutzte Anweisungen. Es benennt die verbleibenden Klassen, Felder und Methoden mit kurzen, bedeutungslosen Namen um. Schließlich überprüft es den verarbeiteten Code für Java 6 oder Java Micro Edition.
Klingt, als ob Sie einen Abhängigkeitsanalysator benötigen. This one könnte den Trick machen.
ProGuard möglicherweise noch besser, da es auch vorhandene .class-Dateien verkleinern kann.
Stop stehlen von meinem Postkumpel :) – willcodejavaforfood
Ich würde mich entschuldigen, aber ich wusste nicht einmal jemand anderes hatte gepostet, bis ich meine Bearbeitung beendet. :) –
+1 Für ProGuard - es wird den Job machen, unbenutzte Klassen und Methoden entfernen und eine neue JAR mit dem unbenutzten Code ausgeben, um zu booten. –
Vielleicht könnten Sie einen benutzerdefinierten Klassenlader laden, der JAR-Dateien oder idealerweise Pack200-Dateien unterstützt.
pack200 ist eher ressourcenintensiv bei der Extraktion –
- 1. Wie kann ich feststellen, welche Plattformversion benötigt wird?
- 2. Wie wird auf Variablen in einer Zeichenfolge auf LiveCode verwiesen?
- 3. Wie kann ich feststellen, auf welche Elementnummer ich klicke?
- 4. Wie kann ich feststellen, welche WCF-Version ausgeführt wird?
- 5. Wie kann ich feststellen, welche Zeilennummer in einer href in einer Tabelle angeklickt wird?
- 6. NSTimer "target": Wie wird auf eine Methode einer Klasse verwiesen?
- 7. Wie wird auf das initiale Commit verwiesen?
- 8. Wie kann man feststellen, welche Tabelle einer Multitable-View aktualisierbar ist?
- 9. Wie kann man wissen, auf welche Weise UITableView gescrollt wird?
- 10. Wie kann ich feststellen, welche JSP eine Webseite enthält, die in einer Webanwendung verwendet wird?
- 11. Wie kann man feststellen, wenn ein UISwitch innerhalb einer UITableViewCell angezapft wurde?
- 12. Wie kann ich feststellen, welche Taste auf der Tastatur gedrückt wird? C++
- 13. Wie wird auf das erste aufgerufene Objekt verwiesen?
- 14. Wie kann ich feststellen, welche HubSection ausgewählt ist?
- 15. Wie kann ich feststellen, ob ein Unterprogramm innerhalb von eval mit Aufrufer aufgerufen wird?
- 16. Wie autoconf/automake auf Nicht-Standard-Pakete verwiesen wird
- 17. Filtere eine Dateigruppe, auf die mit einer refid verwiesen wird
- 18. Wie kann ich feststellen, welche TextBox zuletzt den Fokus hatte?
- 19. Wie kann man wissen, welche Klasse bei 2 Klassen in C++ verwendet wird?
- 20. Wie kann ich feststellen, welche Unix-Shell ich verwende?
- 21. Wie kann ich feststellen, welche Chrome-Version installiert ist?
- 22. Wie kann ich feststellen, welche Ereignisse von GXT ausgelöst werden?
- 23. Wie kann ich feststellen, welche Arbeitsmappe ein Ereignis ausgelöst hat?
- 24. Objektbereich, auf den als Delegierter verwiesen wird
- 25. Wie wird auf ein Asset in einem Ordner verwiesen?
- 26. Ist diese Zeichenfolge Base64? Wie kann ich feststellen, welche Kodierung verwendet wird?
- 27. Wie kann ich feststellen, welche Dateien eine ColdFusion-Anwendung verwendet?
- 28. Wie wird auf den Namen der Amazon Data Pipeline verwiesen?
- 29. Wie kann ich feststellen, welche Schaltfläche zum Senden geklickt wurde
- 30. Wie kann ich feststellen, welche Version der .NET CLR von einer laufenden Anwendung auf XP geladen wird?
Eine Sache, auf die Sie achten sollten, ist, dass ProGuard keine Klassen behandeln kann, auf die Sie nur über Reflektion zugreifen. Wenn Sie welche haben, müssen Sie sie zu einer speziellen Liste hinzufügen (kann sich nicht an die genauen Details erinnern). –