2017-02-27 305 views
0

我包含一个49MB大小的库。但是,我只使用了一些功能,并且我不希望整个库存在于最终的jar中。我使用了proguard。但是,我并未成功缩小规模。如何减少jar大小

任何人都可以让我知道正确的工具,可以智能地删除未使用的类/罐子。

+0

为什么你不在乎它有多大?考虑使用maven-shade-plugin,它具有此功能。 – bmargulies

回答

0

Java SE 5和6已经有一个名为“pack200”的打包工具。该工具能够压缩已经存在的jar文件,然后用于网络分发。我压缩使用以下命令的rt.jar中:

C:\程序\的Java \ jdk1.6.0 \ JRE \ lib文件> pack200 -J-Xmx256m rt.jar.gz的rt.jar

的标志 - JX ..是必要的,因为可能会出现内存溢出,否则异常(pack200是用Java编写...) 结果是惊人的:

产地大小:43.8 MB 压缩后的大小:5.81 MB

对于拆包可以使用工具“unpack200”。

对于WebStart应用程序的分发,工具包200特别有趣,可以实现更快的下载时间。已经有另一个众所周知的样品 - 玻璃鱼。在第二个安装阶段,GlassFish的解压使用unpack200工具内部的图书馆...

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

0

如果你有一个Maven项目,你可以使用maven-shade-plugin,有一个名为minimizeJar配置。

可以由package阶段应用程序的maven-shade-pluginminimizeJar配置选项绑定:

<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> 

参考:Selecting contents for Uber jar