为什么我需要在我的pom文件中添加slf4j作为依赖项才能使用itext7 API?

时间:2018-03-27 18:39:10

标签: dependencies slf4j itext7

我在我的pom文件中使用iText 7内核依赖项。但是,当我调用任何iText API时,我收到错误:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

要解决这个问题,我需要在我的pom文件中添加slf4j依赖项。

为什么我必须在我的pom文件中添加itext内部使用的依赖项?不应该是itext有责任将slf4j作为依赖吗?

1 个答案:

答案 0 :(得分:4)

首先,我不会称之为错误。这是信息或警告,但肯定不是错误。

其次,slf4j-api依赖已经存在于您的类路径中。它是iText的依赖项,当您依赖iText时,它会以传递方式自动添加。如果你最初没有这种依赖,你实际上会得到一个错误,比如ClassNotFoundException

您不必添加任何依赖项。添加iText时,所有必需的内容都已经过期解决。如果您不需要记录并可以按照自己的意愿继续使用iText,则可以忽略此警告。

iText作为依赖项所具有的是用于日志记录实现的通用API,您可以自由选择是否要将任何日志信息呈现给您(有时候那里有非常有用的东西)。这个通用API今天实际上是一个标准。用户可以自由选择他想要使用的记录器实现(记录器抑制,打印到控制台,写入文件等)。 iText有责任为图书馆用户决定这一点。您看到的这三行信息仅提示您iText实际记录了一些可能对您有用的信息,您可以根据需要设置记录器输出。

一些常见的记录器绑定是:

  • slf4j-log4j12:log4j 1.2版的绑定
  • slf4j-jdk14:java.util.logging的绑定
  • slf4j-nop:绑定NOP(No OPeration)
  • slf4j-simple:打印到System.err的绑定
  • slf4j-jcl:Jakarta Commons Logging的绑定

您可以在Maven

上找到所有这些内容