2011-02-11 1 views
9

log4j.dtd에 대해 불평하는 내 응용 프로그램 (일식)을 실행하려고하면 예외가 발생합니다. log4j에 대해 xml 구성을 사용하면 dtd 파일을 갖게 될까요? 당신은 log4j 구성 파일과 같은 XML 파일을 사용하는 경우Log4j가 log4j.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) 
+1

당신이 당신의 스택 트레이스를 더 포함 할 수, log4j에 정상적으로로드 가능하게하는의 EntityResolver를 사용하기 때문에 클래스 경로에서 log4j dtd (따라서 log4j jar 파일에서) –

답변

2

좋아, 내 문제에 대한 답변을 얻었습니다, 그것은 log4j 귀하의 프로젝트 또는 기계에 위치해 dtd 파일이 필요하지 않습니다.

이 오류는 실행을 시작할 때 log4j.xml 파일을 실행하려고 시도 할 때 발생합니다. 이전에 eclipse가 마지막 실행 구성을 실행하는 데 사용되었지만 이제는 열려 있고 포커스가있는 부분을 편집기에서 실행하려고 시도합니다. 그리고 방금 내 log4j.xml 구성 파일이 열려 있었고, eclipse가 XML 파일을 실행하는 데 사용하는 모든 것이 구성 파일에 따라 dtd에 도달하려고 시도하는 중이었습니다.

어쨌든, 고맙습니다.

4

의 DOCTYPE 태그에 보면이 같은 것을 발견 할 것이다 :

그래서
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

당신은 DTD 파일, 그것은 정의가 있기 때문에 것을 필요 XML 구조의

어쨌든 속성 파일을 XML 대신 구성 파일로 사용할 수 있습니다. 당신이 다음 네, 당신은 DTD 파일이 필요합니다, XML 기반의 log4j를 사용하는 경우 Eclipse: Referencing log4j.dtd in log4j.xml

+0

I g dtd를 정의하지 않고 멀리 있습니까? (XML 설정을 사용하는 동안) – Charbel

+1

당신은 할 수 없다고 생각하지만 log4j 위키 http://wiki.apache.org/에서'DOCTYPE' 태그 또는'SYSTEM "log4j.dtd"부분 만 – bluish

+0

제거하려고 할 수 있습니다. logging-log4j/Log4jXmlFormat은 log4j.dtd에 대해서는 언급하지 않고 다른 프로젝트에서는 log4j.dtd를 찾을 수 없습니다. 또한 Charbel

20

:

편집 : 난 그냥 당신을 도울 수있는 상호 연관된 문제를 발견했습니다. 이 DTD 파일을 작업 공간에 복사하십시오. http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd

log4j XML 파일과 동일한 디렉토리에 있는지 확인하십시오.

+0

이것이 올바른 대답으로 선택되지 않은 이유는 무엇입니까? –

+0

log4j.dtd를 찾는데 도움을 준 limc에게 감사드립니다. 직접 질문과 관련이 없지만 귀하의 답변이 나를 위해 매우 유용하다는 사실을 발견했습니다. – jbbarquero

0

난 항아리 응용 프로그램과이 문제를했고 디렉토리 계층 구조에서 log4j.dtd을 넣어 결국 및 경고/오류 메시지가 사라 :

조직/아파치/log4j에/XML/log4j.dtd

을 btw는 log4j.jar 파일의 위치입니다.

2

사람들은 현재 log4j.dtdlog4j.jar (최소 1.2.14 버전)에 포함되어 있습니다.

log4j.dtd은 (this other question 참조) 클래스 경로에서 으로 검색되므로 더 이상 필요하지 않습니다.

3

log4j를 찾고있을해야합니다 의 log4j.xml을 확인합니다.

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

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">

source

관련 문제