簡體   English   中英

為什么Log4j試圖找到log4j.dtd

[英]why is Log4j trying to find 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)

如果您使用的是基於XML的log4j,那么是的,您將需要DTD文件。 將此DTD文件復制到您的工作區: http//logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd

確保它與log4j XML文件位於同一目錄中。

檢查你的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 (請參閱其他問題 ),您不再需要它了。

好的,我得到了我的問題的答案,事實證明log4j不需要dtd文件位於您的項目或機器中。

該錯誤是由我在啟動運行時嘗試運行log4j.xml文件的eclipse引起的。 以前eclipse用於運行最后一次運行配置,現在它嘗試運行編輯器中打開和聚焦的任何內容。 事實上我的log4j.xml配置文件是打開的,並且無論eclipse使用什么來運行xml文件都試圖按照配置文件到達dtd。

無論如何,非常感謝你的幫助。

我有一個jar應用程序的這個問題,並最終將log4j.dtd放在目錄層次結構中,警告/錯誤消息消失了:

組織/阿帕奇/ log4j的/ XML / log4j.dtd

順便說一句,這是log4j.jar文件中的位置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM