(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)
わかりました。問題の答えが得られました。log4jではプロジェクトまたはマシンにdtdファイルを配置する必要がないことがわかりました。
このエラーは、実行を開始したときにEclipseがlog4j.xmlファイルを実行しようとしたことが原因で発生しました。以前はEclipseは最後の実行構成を実行していましたが、現在はエディターで開いていてフォーカスがあるものを実行しようとします。そして、たまたまlog4j.xml構成ファイルが開いていて、Eclipseがxmlファイルを実行するために使用するものはすべて、構成ファイルに従ってdtdに到達しようとしていました。
とにかく、あなたの助けに感謝します。
XMLベースのlog4jを使用している場合は、はい、DTDファイルが必要になります。このDTDファイルをワークスペースにコピーします: http://logging.Apache.org/log4j/1.2/apidocs/org/Apache/log4j/xml/doc-files/log4j.dtd
Log4jXMLファイルと同じディレクトリにあることを確認してください。
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">
XMLファイルをlog4j構成ファイルとして使用する場合は、DOCTYPEタグを調べると、次のようなものが見つかります。
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
したがって、そのDTDファイルが必要です。これはXMLの構造の定義だからです。
とにかく、XMLの代わりにプロパティファイルを構成ファイルとして使用できます。
[〜#〜]編集[〜#〜]:私はあなたを助けることができる相関質問を見つけました: Eclipse:参照log4j.xmlのlog4j.dtd
その上に来る人々のために、今のところ、log4j.dtd
はlog4j.jar
に含まれています(少なくともバージョン1.2.14では)。
log4j.dtd
が検索されるとクラスパス内( この他の質問 を参照)もう必要ありません。
jarアプリケーションでこの問題が発生し、log4j.dtdをディレクトリ階層に配置することになり、警告/エラーメッセージが表示されなくなりました。
org/Apache/log4j/xml/log4j.dtd
ところで、それはlog4j.jarファイル内の場所です