2017-02-17 15 views
2

私はサードパーティのライブラリ(この場合はsolrj)の非常に単純な概念証明を行っています。commons-logging-api-1.1.jarとcommons-logging-1.2.jar

私はビルドシステムとしてMavenを使用しておりますがsolrj(4.10.4)は、依存関係としてそれを定義していないとして、私はエラー

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

を取得します。

従って私は今、手動でMavenの依存関係としてログインコモンズを追加することができますが、私は追加するにはどちらか不明だ:

  • コモンズ・ロギングAPI-1.1.jar
  • またはコモン・ロギング1.2 .jar

私が追加した2つのプログラムに関係なく、プログラムは正常に実行されます。

私の質問:

  • 2つのファイルの違いは何ですか?
  • なぜ、バージョン1.2にcommons-logging-apiが存在しないのですか?

答えて

1

commons-logging-apiは、コード(Solrの場合)がコンパイルされたインターフェースのセットであり、特定のロギング実装にロックされません。 1.1以降は変更されていない可能性がありますので、そのためのmavenベクトルは1.1のまま変わりません。しかし、それはあなたがそれを必要としないので、とにかく1.2バンドルに含まれています。必要なのは次のとおりです。

  • コモンズ・ログ:コモンズ・ログ:1.2

それが故に達人が選ぶだろう、プロジェクト内の他のいくつかの依存関係もコモンズ・ログに依存していること(可能性)が可能ですこれはプロジェクトがいずれの方法でも動作することを示しています。あなたはそれが使用して引っ張っての依存関係の階層を見ることができます:

mvn dependency:tree 

あなたはまた別の基本的なログシステムの実装などを使用するコモンズ・ロギングを設定することができます。 Log4J。 commons-logging user guideを読んで、それがどのように機能し、どのようにあなたの要求に合わせて調整することができるかを知ることは価値があります。