2017-02-27 7 views
0

Ich schließe eine Bibliothek von 49 MB Größe. Aber ich benutze nur wenige Funktionen und möchte nicht, dass die gesamte Bibliothek im finalen Jar vorhanden ist. Ich habe Proguard benutzt. Aber ich war nicht erfolgreich in der Verringerung der Größe.Wie zu reduzieren Glasgröße

Kann mir jemand bitte das richtige Werkzeug, das unbenutzte Klassen/Gläser intelligent entfernen kann.

+0

Warum interessieren Sie sich, wie groß es ist? Ziehen Sie in Erwägung, das maven-shade-plugin zu verwenden, das über eine Funktion verfügt. – bmargulies

Antwort

0

Java SE 5 und 6 kommt bereits mit einem Pack-Tool namens "pack200". Dieses Tool ist in der Lage, bereits vorhandene JAR-Dateien zu komprimieren, die dann für die Netzwerkverteilung verwendet werden können. Ich komprimiert, um die rt.jar mit dem folgenden Befehl:

C: \ Programme \ Java \ jdk1.6.0 \ jre \ lib> pack200 -J-Xmx256m rt.jar.gz rt.jar

Die Flagge - JX .. ist erforderlich, da sonst OutOfMemory Ausnahme auftreten können (pack200 ist in Java geschrieben ...) die Ergebnisse sind erstaunlich:

Herkunft Größe: 43,8 MB Komprimierte Größe: 5,81 MB

Für das Auspacken Werkzeug "unpack200" kann verwendet werden.

Das Tool pack200 ist besonders interessant für den Vertrieb von WebStart-Anwendungen, um schnellere Downloadzeiten zu erreichen. Es gibt bereits eine andere bekannte Probe - Glasfisch. In der zweiten Installationsphase, Glassfish auspackt interne Bibliotheken des unpack200 Tool ...

font: http://www.adam-bien.com/roller/abien/entry/how_to_reduce_the_jar

0

Wenn Sie ein Maven-Projekt haben, können Sie die maven-shade-plugin verwenden, die eine Konfiguration minimizeJar genannt hat.

Sie können die minimizeJar Konfigurationsoption von maven-shade-plugin mit der package Phase Ihrer Anwendung binden durch:

<project> 
    ... 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-shade-plugin</artifactId> 
       <version>3.0.0</version> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>shade</goal> 
         </goals> 
         <configuration> 
         <minimizeJar>true</minimizeJar> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
    ... 
</project> 

Referenz: Selecting contents for Uber jar