web-dev-qa-db-ja.com

Log4jがlog4j.dtdを見つけようとしているのはなぜですか

(Eclipseで)アプリケーションを実行しようとすると、log4j.dtdについて文句を言って例外が発生します。 log4jのxml構成を使用する場合、dtdファイルを使用するつもりですか?

Caused by: Java.io.FileNotFoundException: 

    C:\data\workspace\LDICommon_Trunk\resources\log4j.dtd (The system cannot find the file specified)
        at Java.io.FileInputStream.open(Native Method)
11
Charbel

わかりました。問題の答えが得られました。log4jではプロジェクトまたはマシンにdtdファイルを配置する必要がないことがわかりました。

このエラーは、実行を開始したときにEclipseがlog4j.xmlファイルを実行しようとしたことが原因で発生しました。以前はEclipseは最後の実行構成を実行していましたが、現在はエディターで開いていてフォーカスがあるものを実行しようとします。そして、たまたまlog4j.xml構成ファイルが開いていて、Eclipseがxmlファイルを実行するために使用するものはすべて、構成ファイルに従ってdtdに到達しようとしていました。

とにかく、あなたの助けに感謝します。

2
Charbel

XMLベースのlog4jを使用している場合は、はい、DTDファイルが必要になります。このDTDファイルをワークスペースにコピーします: http://logging.Apache.org/log4j/1.2/apidocs/org/Apache/log4j/xml/doc-files/log4j.dtd

Log4jXMLファイルと同じディレクトリにあることを確認してください。

24
limc

log4j.xmlを確認してくださいlog4j.dtd

<!DOCTYPE log4j:configuration PUBLIC "-//Apache//DTD LOG4J 1.2//EN" "log4j.dtd">

代わりに、次のものを使用できます。

<!DOCTYPE log4j:configuration PUBLIC "-//Apache//DTD LOG4J 1.2//EN" "http://logging.Apache.org/log4j/1.2/apidocs/org/Apache/log4j/xml/doc-files/log4j.dtd">

ソース

7

XMLファイルをlog4j構成ファイルとして使用する場合は、DOCTYPEタグを調べると、次のようなものが見つかります。

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

したがって、そのDTDファイルが必要です。これはXMLの構造の定義だからです。

とにかく、XMLの代わりにプロパティファイルを構成ファイルとして使用できます。

[〜#〜]編集[〜#〜]:私はあなたを助けることができる相関質問を見つけました: Eclipse:参照log4j.xmlのlog4j.dtd

4
bluish

その上に来る人々のために、今のところ、log4j.dtdlog4j.jarに含まれています(少なくともバージョン1.2.14では)。

log4j.dtdが検索されるとクラスパス内この他の質問 を参照)もう必要ありません。

3
Matthieu

jarアプリケーションでこの問題が発生し、log4j.dtdをディレクトリ階層に配置することになり、警告/エラーメッセージが表示されなくなりました。

org/Apache/log4j/xml/log4j.dtd

ところで、それはlog4j.jarファイル内の場所です

0
Bob