2011-02-11 15 views
9

खोजने का प्रयास क्यों कर रहा है जब मैं log4j.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 कि लोड हो रहा है सक्षम बनाता है का उपयोग करता है classpath से log4j dtd (और इस प्रकार log4j jar फ़ाइल से) –

उत्तर

2

ठीक है, मुझे मेरी समस्या का जवाब मिला है, यह पता चला है कि log4j को आपके प्रोजेक्ट या मशीन में स्थित फ़ाइल फ़ाइल की आवश्यकता नहीं है।

त्रुटि जब मैंने एक रन लॉन्च किया तो log4j.xml फ़ाइल चलाने की कोशिश कर रहा त्रुटि। पहले ग्रहण अंतिम रन कॉन्फ़िगरेशन चलाने के लिए प्रयुक्त होता है, अब यह जो भी खुला है और संपादक में फोकस करने की कोशिश करता है। और यह अभी हुआ कि मेरी log4j.xml कॉन्फ़िगरेशन फ़ाइल खुली थी, और जो भी ग्रहण xml फ़ाइल चलाने के लिए उपयोग करता है वह कॉन्फ़िगरेशन फ़ाइल के अनुसार dtd तक पहुंचने का प्रयास कर रहा था।

वैसे भी, आपकी मदद के लिए बहुत बहुत धन्यवाद।

4

आप log4j विन्यास फाइल के रूप में एक XML फ़ाइल का उपयोग करते हैं, DOCTYPE टैग में देखते हैं और आप कुछ इस तरह मिल जाएगा:

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

तो आप की जरूरत है कि DTD फ़ाइल है, क्योंकि यह परिभाषा है आपके एक्सएमएल की संरचना का।

वैसे भी आप किसी XML फ़ाइल के बजाय कॉन्फ़िगरेशन फ़ाइल के रूप में गुण फ़ाइल का उपयोग कर सकते हैं।

संपादित: Eclipse: Referencing log4j.dtd in log4j.xml

+0

क्या मैं g एक डीटी परिभाषित किए बिना दूर? (एक्सएमएल कॉन्फ़िगरेशन का उपयोग करते समय) – Charbel

+1

मुझे लगता है कि आप नहीं कर सकते हैं, लेकिन आप log4j विकी में 'DOCTYPE' टैग या केवल 'सिस्टम "log4j.dtd को हटाने का प्रयास कर सकते हैं" भाग – bluish

+0

http://wiki.apache.org/ logging-log4j/log4jXmlFormat फिर log4j.dtd के बारे में कुछ भी उल्लेख न करें, मुझे अन्य परियोजनाओं में कोई log4j.dtd नहीं मिल रहा है। Charbel

20

आप XML- आधारित log4j का उपयोग कर रहे हैं, तो हां, तो आप 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 डाल समाप्त हो गया और चेतावनी दी है/त्रुटि संदेशों गायब हो गया:

org/अपाचे/log4j/xml/log4j.dtd

btw कि log4j.jar फ़ाइल में स्थान

2

उस पर आने वाले लोगों के लिए, log4j.dtdlog4j.jar (संस्करण 1.2.14 में कम से कम) में शामिल है।

log4j.dtd के रूप में अपने classpath (this other question देखें) आप इसे अब और आवश्यकता नहीं होनी चाहिए में के लिए देखा जाता है।

3

अपने 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">

source