0

log4j を使用する小さなアプリをデプロイしようとしています。アプリは、Class-Path 属性を含むマニフェストを含む実行可能な jar としてデプロイされます。
これは、Ant jar タスクで実現されます。クラスパスを定義する行は次のとおりです

<attribute name="Class-Path" value=" ./ islib  islib/commons-lang-2.0.jar islib/commons-logging-1.0.jar islib/log4j-1.2.16.jar" >

実行可能な jar がデプロイされ、C:/ami/bin から実行されます。log4j.properties は、C:/ami/bin/islib にある場合は見つかりませんが、C:/ami/bin にある場合は見つかります。/islib 内の他のすべての jar が検出され、アプリが正常に実行されます。

マニフェストの Class-Path は、jar 内のクラスに対してのみクラスパスを定義しますか?

4

1 に答える 1

1

Classpath は、クラス ローダーがクラスを検索する場所を定義します。

Log4j.properties は、クラスパスからではなく、ファイル システムから読み込まれます。つまり、プログラムが開始されたときの現在のディレクトリに関連しています。

(ログ API として slf4j を使用する場合、Logback はクラスパスで構成ファイルを探します)

于 2013-10-17T16:15:23.643 に答える