3

我收到此错误:

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 的库在那里,那么可能是什么问题?

更新

正如我发现的那样,在优化过程中会出现问题。收缩和混淆正在起作用。

4

2 回答 2

3

对于那些需要在 Android 上使用 Log4J 的快速解决方案的人来说,Krivers 的更新实际上起到了提示作用:-dontoptimizeProGuard 配置中的设置关闭了优化,从而避免了错误(尽管这应该只被视为一种解决方法)。

事实上,Android Tools Project Site 也曾建议关闭 ProGuard 优化

Dalvik 执行了许多自己的优化,而 ProGuard 执行的一些优化与 Dalvik 不兼容,因此为避免难以解决的错误(并且由于净性能增益通常很小),默认配置关闭优化.

于 2015-04-22T09:44:20.207 回答
2

org.apache.log4j.chainsaw.LoadXMLAction 类扩展了 javax.swing.AbstractAction 类。后一个类是 Swing 的一部分,它在 Android 中不存在。因此,LoadXMLAction 永远不能在实践中使用。此外,如果没有完整的类层次结构,ProGuard 无法正确分析该类。

解决方案:您应该避免将 LoadXMLAction 添加到您的应用程序库中,方法是不将相应的 Apache jar 放在您的 libs 目录中,或者从 ProGuardinjars选项中过滤掉类(和类似的类)(在标准构建过程中更难),或通过从 jar 中删除类。

于 2013-05-23T16:51:45.497 回答