带有多版本 jar 的 proguard

标签 proguard log4j2 java-9

运行混淆时出现以下错误
[proguard] 警告:类 [META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.class] 意外包含类 [org.apache.logging.log4j.util.ProcessIdUtil]

它看起来像 proguard 自省(introspection)到 META-INF 文件夹并尝试处理在该目录中找到的类

尽管我添加了行 -libraryjars log4j-api-2.10.0.jar (对于所有 log4j jars),但还是会发生这种情况

这发生在 proguard 版本 6.0.2

最佳答案

ProGuard 只能处理单个版本的代码。如果您使用 -injars 指定的 jar 或 -libraryjars包含多个版本,您可以过滤掉替代版本,例如

-injars log4j-api-2.10.0.jar(!META-INF/versions/**)

关于带有多版本 jar 的 proguard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49843105/

相关文章:

java - 如何从 Java 9 中的另一个模块获取 ResourceBundle?

android - 库类(来自 Android sdk)依赖于程序类(同样是 Android sdk)

java - log4j2 RollingFile 附加程序

java - Apache Log4j 2.17 版本 : ERROR StatusLogger Reconfiguration failed: No configuration found for '277050dc' at 'null' in 'null'

java - 从 AppContext 中删除类的 Java 9+ 等效项是什么?需要重新加载PrintServiceLookup类

java - 如何在集成了 Jigsaw 的情况下为 OpenJDK 9 打补丁?

android - 设置 Proguard 和导出 APK 时出错

android - 为什么android sdk中默认的proguard配置使用keep *注释*

android - 为什么在我以前不需要时开始使用 -libraryjars?

java - LightCouch 忽略 Log4j 日志级别