使用 slf4j 记录器保护 Javafx 应用程序
Proguarding a Javafx application using slf4j logger
我之前构建了一个 Javafx 应用程序并在使用 java.util.Logger 时成功地用混淆器包装了它。但是,我需要从 java.util.Logger 切换到 slf4j 提供的 Logger 并使用 qos-logback。当我在其上使用 proguard 时,我 运行 进入警告数组,所有这些警告都是从 slf4j 或 qos-logback 库生成的。一些 (MANYYY) 警告是:
- 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:
找不到引用的 class javax.servlet.http.HttpServletResponse
- 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:
找不到引用的 class javax.servlet.http.HttpServletRequest
- 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:
找不到引用的 class javax.servlet.http.HttpServletResponse
- 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:
找不到引用的 class javax.servlet.http.HttpServletRequest
- 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:
找不到引用的 class javax.servlet.http.HttpServletResponse
- 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:
找不到引用的 class javax.servlet.http.HttpServletRequest
- 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:
找不到引用的 class javax.servlet.http.HttpServletResponse
- 警告:org.slf4j.MDC:找不到引用的方法
'org.slf4j.impl.StaticMDCBinder getSingleton()' 在程序中 class
组织slf4j.impl.StaticMDCBinder
- 警告:组织slf4j.MarkerFactory:
找不到引用的方法 'org.slf4j.impl.StaticMarkerBinder
程序 class org.slf4j.impl.StaticMarkerBinder
中的 getSingleton()'
- 注:ch.qos.logback.classic.gaffer.GafferUtil访问构造函数
'(ch.qos.logback.classic.LoggerContext)'动态
如果您注意到,有些警告甚至会重复出现。如果有人能帮助我解决这个问题,我将非常感激,即使它只是为我指明了正确的方向,因为我已经坚持了一段时间。非常感谢。
经过一番努力,总算是把事情搞定了。
我必须将以下内容添加到配置中:
-keep,allowshrinking class ch.qos.logback.core.status.ViewStatusMessagesServletBase {
<fields>;
<methods>;
}
我还需要检查警告以找到来源,并且必须将 servlet-api.jar 作为库单独添加。
我之前构建了一个 Javafx 应用程序并在使用 java.util.Logger 时成功地用混淆器包装了它。但是,我需要从 java.util.Logger 切换到 slf4j 提供的 Logger 并使用 qos-logback。当我在其上使用 proguard 时,我 运行 进入警告数组,所有这些警告都是从 slf4j 或 qos-logback 库生成的。一些 (MANYYY) 警告是:
- 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase: 找不到引用的 class javax.servlet.http.HttpServletResponse
- 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase: 找不到引用的 class javax.servlet.http.HttpServletRequest
- 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase: 找不到引用的 class javax.servlet.http.HttpServletResponse
- 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase: 找不到引用的 class javax.servlet.http.HttpServletRequest
- 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase: 找不到引用的 class javax.servlet.http.HttpServletResponse
- 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase: 找不到引用的 class javax.servlet.http.HttpServletRequest
- 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase: 找不到引用的 class javax.servlet.http.HttpServletResponse
- 警告:org.slf4j.MDC:找不到引用的方法 'org.slf4j.impl.StaticMDCBinder getSingleton()' 在程序中 class 组织slf4j.impl.StaticMDCBinder
- 警告:组织slf4j.MarkerFactory: 找不到引用的方法 'org.slf4j.impl.StaticMarkerBinder 程序 class org.slf4j.impl.StaticMarkerBinder 中的 getSingleton()'
- 注:ch.qos.logback.classic.gaffer.GafferUtil访问构造函数 '(ch.qos.logback.classic.LoggerContext)'动态
如果您注意到,有些警告甚至会重复出现。如果有人能帮助我解决这个问题,我将非常感激,即使它只是为我指明了正确的方向,因为我已经坚持了一段时间。非常感谢。
经过一番努力,总算是把事情搞定了。
我必须将以下内容添加到配置中:
-keep,allowshrinking class ch.qos.logback.core.status.ViewStatusMessagesServletBase {
<fields>;
<methods>;
}
我还需要检查警告以找到来源,并且必须将 servlet-api.jar 作为库单独添加。