2013-05-21 150 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' –

相关问题