2017-02-17 137 views
2

我正在做一個非常簡單的第三方庫的概念證明(在這種情況下,solrj)。commons-logging-api-1.1.jar vs. commons-logging-1.2.jar

雖然我使用Maven作爲構建系統,我得到的錯誤

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

爲solrj(4.10.4)並沒有將其定義爲依賴性。

我因此現在可以手動添加公共登錄作爲行家依賴性,但我不能確定要添加的一個:

  • 共享記錄-API-1.1.jar
  • 或共享記錄-1.2 .jar

程序運行成功,不管我添加哪兩個。

我的問題:

  • 是什麼2個文件之間的差異?
  • 爲什麼commons-logging-api在版本1.2中不存在?

回答

1

commons-logging-api只是一組接口,代碼(本例中爲Solr)編譯時沒有'鎖定'到任何特定的日誌記錄實現。從1.1開始,它不太可能發生變化,所以它的Maven矢量保持不變,爲1.1。但無論如何它都包含在1.2包中,所以你不需要它。所有你需要的是:

  • 共享記錄:共享記錄:1.2

這是可能的(可能),在你的項目中一些其他的依賴是依賴於共享記錄還,因此行家會挑這一點,你會發現該項目無論如何工作。你可以看到依賴它拉的層次結構中使用:

mvn dependency:tree 

您還可以配置共享記錄使用備用底層日誌系統實現如。 Log4J的。這是值得閱讀commons-logging user guide瞭解它是如何工作的,你可以做些什麼來調整它以滿足你的要求。