您好我已经使用HTMLUnit编写了一个脚本,该脚本提取给定url的网页并对它们执行某些操作。例如在页面上搜索字符串或单击链接等。我正在使用eclipse IDE创建一个可运行的jar。减少HtmlUnit库的jar大小
HTML-Unit包含大约21种不同的库罐,我在我的单个最终可运行jar中提取。这些依赖关系导致单个jar占用大约9.3MB的空间。我一直试图通过使用模糊处理来减少单个jar的大小。我正在使用一个名为proguard的工具。
这里有一个例子proguard的配置,我使用的的“共享记录-1.1.1.jar”的名义来混淆单个库的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网站上使用 - >典型库。在使用这21个缩小的jar重新编译项目并运行它时,脚本在运行时会失败,例外:
“java.lang.NoSuchMethodException:org.apache.http.conn.ssl.SSLSocketFactory.createDefaultSSLContext() “
看起来像我混淆了个别瓶子的方式,现在不会找到某些方法。你能指导我什么可能导致这些例外。并且上面的配置文件有什么问题。如果 那么对于这种情况什么是最好的proguard配置。
我知道另一个成员正在追逐类似的问题。现在的问题是张贴在链接:
[链接](Determine used libraries to reduce JAR file size)
谢谢!!
感谢埃里克,帮助! – Chiseled