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

时间:2017-02-17 12:21:24

标签: java apache-commons-logging

我正在做一个非常简单的第三方库概念证明(在本例中为solrj)。

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

  

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

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

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

  • 共享记录-API-1.1.jar
  • 或commons-logging-1.2.jar

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

我的问题:

  • 这2个文件有什么区别?
  • 为什么版本1.2中不存在commons-logging-api?

1 个答案:

答案 0 :(得分:2)

commons-logging-api只是一组接口,代码(在这种情况下是Solr)被编译,没有'锁定'任何特定的日志记录实现。自1.1以来它根本不可能发生变化,因此它的maven向量保持不变为1.1。但无论如何它都包含在1.2捆绑中,所以你不需要它。您所需要的只是:

  • 共享记录:共享记录:1.2

可能(可能)项目中的某些其他依赖项也依赖于公共日志记录,因此maven会选择它并且您发现项目以任何方式工作。您可以使用以下方式查看依赖关系的层次结构:

mvn dependency:tree

您还可以配置commons-logging以使用备用基础日志系统实现,例如。 Log4J的。值得阅读commons-logging user guide以了解它是如何工作的,以及如何根据您的要求进行调整。