0

我之前构建了一个 Javafx 应用程序,并在使用 java.util.Logger 时成功地用 proguard 包装了它。但是,我需要从 java.util.Logger 切换到 slf4j 提供的 Logger 并使用 qos-logback。当我对它使用 proguard 时,我遇到了一系列警告,这些警告都是由 slf4j 或 qos-logback 库生成的。一些(MANYYY)警告是:

  • 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:找不到引用的类 javax.servlet.http.HttpServletResponse
  • 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:找不到引用的类 javax.servlet.http.HttpServletRequest
  • 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:找不到引用的类 javax.servlet.http.HttpServletResponse
  • 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:找不到引用的类 javax.servlet.http.HttpServletRequest
  • 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:找不到引用的类 javax.servlet.http.HttpServletResponse
  • 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:找不到引用的类 javax.servlet.http.HttpServletRequest
  • 警告:ch.qos.logback.core.status.ViewStatusMessagesServletBase:找不到引用的类 javax.servlet.http.HttpServletResponse
  • 警告:org.slf4j.MDC:在程序类 org.slf4j.impl.StaticMDCBinder 中找不到引用的方法 'org.slf4j.impl.StaticMDCBinder getSingleton()'
  • 警告:org.slf4j.MarkerFactory:在程序类 org.slf4j.impl.StaticMarkerBinder 中找不到引用的方法 'org.slf4j.impl.StaticMarkerBinder getSingleton()'
  • 注意:ch.qos.logback.classic.gaffer.GafferUtil 动态访问构造函数'(ch.qos.logback.classic.LoggerContext)'

如果您注意到,某些警告甚至会重复出现。如果有人能帮助我解决这个问题,我将非常感激,即使它只是为我指明了正确的方向,因为我已经坚持了一段时间。提前谢谢了。

4

1 回答 1

0

经过一番努力,我把事情做好了。

我必须在配置中添加以下内容:

-keep,allowshrinking class ch.qos.logback.core.status.ViewStatusMessagesServletBase {
    <fields>;
    <methods>;
}

我还需要检查警告以找到源代码,并且必须将 servlet-api.jar 作为库单独添加。

于 2017-05-28T06:25:56.513 回答