Verringern Sie die Größe der externen JAR-Datei

8

Ich habe ein Modul für ein Java-Projekt entwickelt. Das Modul ist abhängig von der externen Bibliothek ( fastutil ). Das Problem ist, dass die Datei fastutil.jar einige Male schwerer ist als das gesamte Projekt selbst (14 MB). Ich verwende nur eine kleine Teilmenge der Klassen aus der Bibliothek. Das Modul ist jetzt fertig, und niemand wird es in Zukunft wahrscheinlich erweitern. Gibt es eine Möglichkeit, nur die relevante Klasse zu einigen fastutil_small.jar zu extrahieren, damit andere nicht dieses zusätzliche Gewicht herunterladen müssen?

    
joe_shmoe 09.04.2010, 09:52
quelle

4 Antworten

8

Verschleierungstools wie ProGuard bieten normalerweise eine Funktion, um nicht verwendete Klassen (und sogar Felder und Methoden) aus der JAR-Datei zu entfernen. Sie müssen jedoch darauf achten, dass alles noch funktioniert, weil Sie reflecton für den Zugriff auf Klassen oder Methoden verwenden, die ProGuard nicht analysieren kann.

Sie können nur diese Funktion verwenden und bereits einiges einsparen

Oder Sie kombinieren es mit anderen platzsparenden Verschleierungstechniken (z. B. Klassen- und Methodenumbenennung), um noch mehr Platz auf Kosten von schwierigerem Debugging zu sparen (Ihre Stack-Traces werden schwieriger zu parsen).

    
Joachim Sauer 09.04.2010, 09:57
quelle
5

Von den Installationsanweisungen von fastutil:

  

Beachten Sie, dass die jar-Datei aufgrund der großen Anzahl von Klassen sehr umfangreich ist: Wenn Sie Ihr eigenes jar mit einigen enthaltenen fastutil-Klassen ausliefern möchten, sollten Sie sich AutoJar (auch verfügbar bei JPackage), um automatisch die notwendigen Klassen zu extrahieren.

    
Thilo 09.04.2010 10:04
quelle
2

Da es sich bei fastutil um eine LGPL-Open-Source-Software handelt, könnten Sie einfach die relevanten Quelldateien in Ihr Projekt kopieren und diese JAR-Datei löschen. Der Compiler wird Ihnen dann sagen, ob Sie alle benötigten Dateien haben. Bewahren Sie die Pakete einfach so auf, wie sie sind, und legen Sie eine Kopie der Lizenzdatei von fastutil an die Spitze.

    
Jörn Zaefferer 09.04.2010 10:04
quelle
0

Ja, ein primitives ist, ein Backup von Ihrem Originalglas zu haben. Entfernen Sie dann alle nicht verwendeten Klassendateien aus dem Jar. und es kann einige interne Verweise auf andere Klassen geben, die Sie hinzufügen können, wenn dies erforderlich ist. Dh während der Ausführung kann eine Klasse nicht gefunden Exception werfen, dann können Sie diese Klasse aus dem Original Jar zu diesem Jar hinzufügen.

    
GuruKulki 09.04.2010 09:57
quelle

Tags und Links