2013-05-21 88 views
3

我得到這個錯誤:Proguard的 - 無法找到任何超類

Unexpected error while performing partial evaluation: 
Class  = [org/apache/log4j/chainsaw/Main] 
Method  = [<init>()V] 
Exception = [java.lang.IllegalArgumentException] (Can't find any super classes of [org/apache/log4j/chainsaw/LoadXMLAction] (not even immediate super class [javax/swing/AbstractAction])) 
Error: Can't find any super classes of [org/apache/log4j/chainsaw/LoadXMLAction] (not even immediate super class [javax/swing/AbstractAction]) 

我ProGuard的配置部分:

-dontwarn javax.jms.** 
-dontwarn com.sun.jdmk.comm.** 
-dontwarn android.support.v4.** 
-dontwarn com.google.api.client.googleapis.extensions.** 
-dontwarn org.apache.harmony.** 
-dontwarn com.sun.** 
-dontwarn org.simpleframework.** 
-dontwarn com.google.android.gms.** 
-dontwarn org.apache.log4j.lf5.viewer.** 
-dontwarn java.beans.** 
-dontwarn org.apache.log4j.** 

-libraryjars 'D:\Workspace\android\libs\acra-4.5.0.jar' 
-libraryjars 'D:\Workspace\android\libs\activation.jar' 
-libraryjars 'D:\Workspace\android\libs\additionnal.jar' 
-libraryjars 'D:\Workspace\android\libs\android-logging-log4j-1.0.3.jar' 
-libraryjars 'D:\Workspace\android\libs\android-support-v4.jar' 
-libraryjars 'D:\Workspace\android\libs\annotations.jar' 
-libraryjars 'D:\Workspace\android\libs\google-api-client-android-1.12.0-beta.jar' 
-libraryjars 'D:\Workspace\android\libs\jtar-1.1.jar' 
-libraryjars 'D:\Workspace\android\libs\log4j-1.2.15.jar' 
-libraryjars 'D:\Workspace\android\libs\mail.jar' 
-libraryjars 'D:\Workspace\android\libs\simple-xml-2.6.9.jar' 

的log4j的圖書館是存在的,所以這可能是問題?

UPDATE

正如我已經找到了問題optimalization期間提出。 收縮和模糊處理正在工作。

+0

哪個罐子您使用的?我在我的一個項目中遇到了同樣的問題(但是在另一個項目中卻不是很奇怪),我使用jar'log4j-android-1.2.17-1.jar' –

回答

1

對於那些需要在Android上使用Log4J的快速解決方案,Krivers的更新實際上作爲提示:在ProGuard配置中設置-dontoptimize會關閉優化,從而避免錯誤(儘管這應該只被視爲解決方法) 。

事實上,Android的工具項目現場還suggested to turn off ProGuard optimization有:

Dalvik performs many of its own optimizations, and some of the optimizations performed by ProGuard are incompatible with Dalvik, so to avoid hard-to-figure-out bugs (and because the net performance gain is usually small), the default configuration turns off optimization.

1

類org.apache.log4j.chainsaw.LoadXMLAction擴展了類javax.swing.AbstractAction。後一類是Swing的一部分,它不在Android中。因此,LoadXMLAction永遠不能在實踐中使用。此外,如果沒有完整的類層次結構,ProGuard無法正確分析該類。

解決方案:您應該避免將LoadXMLAction添加到您的應用程序庫中,方法是不將相應的Apache jar放入libs目錄中,或者從ProGuard injars選項中篩選出類(以及類似的類)標準構建過程),或者從jar中刪除類。

+0

我遇到了同樣的問題,不知道爲什麼Proguard首先需要LoadXMLAction。有關如何過濾課程的更多詳情?該jar是'log4j-android-1.2.17-1.jar' –

相關問題