[英]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.