您好我已經使用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