是否有一个很好的应用程序通过消除冗余类/方法/常量池元素来减少jar文件大小?(即假设没有反射,无法从一组固定的入口点到达)
当我只是使用他们的几种方法时,我已经厌倦了拉臃肿的库.
(我不是在谈论小的"本地"优化,比如缩小名称.我正在考虑更多的东西进行全局分析,以确定使用哪些类/方法/变量,给定一组入口点(包括反射条目)点),并删除未使用的所有内容.
我的webapp就像是45MB,主要是由于30多个库,而且我很确定我只使用了每个库的一小部分.
有没有人试图将谷歌guice的使用与混淆(特别是proguard)结合起来?我的代码的混淆版本不适用于google guice,因为guice抱怨缺少类型参数.这些信息似乎被proguard所做的转换步骤所删除,即使相关类被排除在混淆之外.
堆栈跟踪如下所示:
com.google.inject.CreationException: Guice creation errors:
1) Cannot inject a Provider that has no type parameter
while locating com.google.inject.Provider
for parameter 0 at de.repower.lvs.client.admin.user.administration.AdminUserCommonPanel.setPasswordPanelProvider(SourceFile:499)
at de.repower.lvs.client.admin.user.administration.AdminUserCommonPanel.setPasswordPanelProvider(SourceFile:499)
while locating de.repower.lvs.client.admin.user.administration.AdminUserCommonPanel
for parameter 0 at de.repower.lvs.client.admin.user.administration.b.k.setParentPanel(SourceFile:65)
at de.repower.lvs.client.admin.user.administration.b.k.setParentPanel(SourceFile:65)
at de.repower.lvs.client.admin.user.administration.o.a(SourceFile:38)
2) Cannot inject a Provider that has no type parameter
while locating com.google.inject.Provider
for parameter 0 at de.repower.lvs.client.admin.user.administration.AdminUserCommonPanel.setWindTurbineAccessGroupProvider(SourceFile:509)
at de.repower.lvs.client.admin.user.administration.AdminUserCommonPanel.setWindTurbineAccessGroupProvider(SourceFile:509)
while locating de.repower.lvs.client.admin.user.administration.AdminUserCommonPanel
for parameter 0 at de.repower.lvs.client.admin.user.administration.b.k.setParentPanel(SourceFile:65)
at de.repower.lvs.client.admin.user.administration.b.k.setParentPanel(SourceFile:65)
at de.repower.lvs.client.admin.user.administration.o.a(SourceFile:38)
2 errors
at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:354)
at com.google.inject.InjectorBuilder.initializeStatically(InjectorBuilder.java:152)
at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:105)
at …Run Code Online (Sandbox Code Playgroud) 是否有任何工具可以列出哪些应用程序有效地使用哪些类,或者甚至更好地自动修剪JAR库以仅提供引用和使用的类?
jar ×2
java ×2
compression ×1
dependencies ×1
guice ×1
obfuscation ×1
optimization ×1
proguard ×1