【问题标题】:Reducing HtmlUnit Library jar size减少 HtmlUnit 库 jar 大小
【发布时间】:2013-06-19 22:20:31
【问题描述】:

您好,我使用 HTMLUnit 编写了一个脚本,该脚本可以获取给定 url 的网页并对其执行某些操作。例如在页面上搜索字符串或单击链接等。我正在使用 Eclipse IDE 创建一个可运行的 jar。

HTML-Unit 包含大约 21 个不同的库 jar,我将它们提取到我的单个最终可运行 jar 中。这些依赖关系导致单个 jar 占用大约 9.3MB 的空间。我一直在尝试使用混淆来减小单个 jar 的大小。我正在使用一个名为 proguard 的工具。

这是我用来混淆单个库 jar 的示例 proguard 配置,名称为“commons-logging-1.1.1.jar”:

 `-libraryjars  <java.home>/lib/rt.jar

  -injars       C:/Users/Desktop/Jars/commons-logging-1.1.1.jar

  -outjar       C:/Users/Desktop/SmallJars/commons-logging-1.1.1.jar

  -printmapping C:/Users/Desktop/SmallJars/out_commons-logging-1.1.1.map

  -renamesourcefileattribute SourceFile

  -dontnote

  -keepattributes InnerClasses,SourceFile,LineNumberTable,Deprecated

  -keep public class * {
   public protected *;
   }

  -keepclassmembernames class * {
   java.lang.Class class$(java.lang.String);
   java.lang.Class class$(java.lang.String, boolean);
   }

   -keepclasseswithmembernames class * {
    native <methods>;
    }

   -keepclassmembers class * implements java.io.Serializable 
    {
    static final long serialVersionUID;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
    }`

配置与 proguard 网站上给出的配置几乎相同 -> 典型库。在 Eclipse 中使用这 21 个简化的 jar 重建项目并运行它时,脚本在运行时失败,但有以下异常:

“java.lang.NoSuchMethodException: org.apache.http.conn.ssl.SSLSocketFactory.createDefaultSSLContext()”

看起来我以某种方式混淆了各个罐子,现在找不到某些方法。您能否指导我了解可能导致这些异常的原因。上面的配置文件有问题吗。如果 那么对于这种情况,最好的 proguard 配置是什么。

我知道另一位成员正在寻找类似的问题。问题发布在链接:

[链接] (Determine used libraries to reduce JAR file size)

谢谢!!

【问题讨论】:

    标签: jar obfuscation proguard htmlunit


    【解决方案1】:

    该方法是通过反射访问的,ProGuard 无法从其静态分析中得知。您必须将其保留在您的配置中。参照。 ProGuard 手册 > 疑难解答 > NoSuchMethodException.

    作为一个整体处理应用程序将比单独处理库更有效,因为 ProGuard 可能会删除完全未使用的库或至少其中大部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      • 2012-05-10
      • 2018-01-31
      • 1970-01-01
      相关资源
      最近更新 更多