我一直在混乱的配置,并发现我想测试,只是为了优化和混淆,而不是缩小只是为了减少我的罐子一点。这是我的配置:
# Include java runtime classes
-libraryjars <java.home>/lib/rt.jar
-dontshrink
-dontusemixedcaseclassnames
-dontpreverify
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
-optimizationpasses 5
-dontwarn
-keep class **
-keep interface **
-keep enum **但我还是会犯这样的错误:
java.lang.IllegalArgumentException:找不到org/apache/logging/log4j/core/jackson/Log4jXmlModule和org/apache/logging/log4j/core/jackson/Log4jJsonModule的普通超类
我做错什么了?
发布于 2018-10-28 14:00:21
log4j库依赖于某些运行时依赖项,请参见此处的页面:
https://logging.apache.org/log4j/2.x/runtime-dependencies.html
所讨论的类(Log4jXmlModule和Log4jJsonModule)是从某些jackson类扩展而来的,它只是一个可选的依赖项,因此可能没有包含在您的项目中。
如果启用-dontshrink,ProGuard无法删除这些类,在优化过程中会出现类似的错误,因为ProGuard不了解层次结构。通常,不建议执行优化,而是禁用收缩,因为一些优化技术依赖于收缩之后清理的事实。
在您的示例中,您可以将缺失的运行时依赖项作为-libraryjar输入添加到ProGuard中,以避免此错误。
https://stackoverflow.com/questions/53032091
复制相似问题