commons-logging-api-1.1.jar 与 commons-logging-1.2.jar

commons-logging-api-1.1.jar vs. commons-logging-1.2.jar

我正在对第 3 方库(在本例中为 solrj)进行非常简单的概念验证。

虽然我使用 maven 作为构建系统,但我得到了错误

java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory

因为 solrj (4.10.4) 没有将其定义为依赖项。

因此,我现在可以手动将公共日志记录添加为 Maven 依赖项,但我不确定要添加哪个:

程序运行成功,无论我添加哪个。

我的问题:

commons-logging-api 只是代码(在本例中为 Solr)编译到的一组接口,没有 'locking in' 到任何特定的日志记录实现。自 1.1 以来,它不太可能发生任何变化,因此它的 Maven 向量在 1.1 中保持不变。但无论如何它都包含在 1.2 包中,因此您不需要它。您只需要:

  • commons-logging:commons-logging:1.2

您的项目中的某些其他依赖项也可能(很可能)也依赖于 commons-logging,因此 Maven 会选择它并且您会发现该项目以任何一种方式工作。您可以使用以下命令查看它所引入的依赖关系的层次结构:

mvn dependency:tree

您还可以配置 commons-logging 以使用备用底层日志系统实现,例如。 Log4J。值得一读 commons-logging user guide 以了解其工作原理以及如何根据您的要求对其进行调整。