2012-02-27 25 views
14

अक्ष का उपयोग करके SOAP webservice को कॉल करने का प्रयास करते समय मुझे यह अपवाद मिल रहा है। मूल रूप से मैंने एक अक्ष क्लाइंट लिखा है।अपाचे अक्ष साबुन क्लाइंट के साथ सामान्य लॉगिंग जार संघर्ष

org.apache.commons.discovery.DiscoveryException: Class org.apache.commons.logging.impl.SLF4JLogFactory does not implement org.apache.commons.logging.LogFactory. 

जब मैं सभी आम-लॉगिंग जार निकालने के लिए, मैं इन त्रुटियों को दूर करने में सक्षम हैं, लेकिन इन जार अन्य API से आ रहे हैं, मुझे नहीं उन पर नियंत्रण है।

क्या इस समस्या को दूर करने का कोई तरीका है?

+0

शायद सबसे अच्छा समाधान नीचे दिया गया है। लेकिन अगर आप मेवेन प्रोजेक्ट का उपयोग कर रहे हैं तो आप बहिष्करण द्वारा कॉमन्स-लॉगिंग को हटा सकते हैं। अक्ष अक्ष 1,4 \t \t \t \t कॉमन्स-लॉगिंग \t \t \t कॉमन्स-लॉगिंग Purushothaman

उत्तर

9

समस्या क्या हो सकती है और commons logging documentation में इसे डीबग करने के तरीकों का एक विस्तृत विस्तृत विवरण है। अपने विशेष मुद्दा हो सकता है,

भी एक और अधिक असामान्य जिस तरह इस डाली असफल हो सकता है नहीं है: भी जब द्विआधारी संगत है, कार्यान्वयन वर्ग क्रम में लोड का एक अलग उदाहरण से जोड़ा जा सकता LogFactory वर्ग। अधिक जानकारी के लिए, tech guide देखें।

6

ऊपर से लिंक करने के लिए खंड "सुधार" Documentation उल्लेख शामिल करने के लिए

-Dorg.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl 
अपने सेटअप में

पता चलता है। कुछ लोगों के लिए यह बजाय इस कोड को शामिल करने के लिए आसान हो सकता है:

static 
{ 
    System.setProperty(LogFactory.FACTORY_PROPERTY, LogFactory.FACTORY_DEFAULT); 
} 
1

इस समाधान में से कोई भी मेरे लिए काम किया। मैं SLF4J दस्तावेज में मेरी समाधान यह पता लगाने

http://slf4j.org/faq.html#excludingJCL

विकल्प 2) गुंजाइश प्रदान की कॉमन्स-प्रवेश नहीं बल्कि बस हो सकता है और सुविधा पोम के भीतर प्रदान दायरे में यह घोषणा करके एक निर्भरता के रूप में बाहर रखा गया। आपकी परियोजना की एक्सएमएल फाइल। वास्तविक कॉमन्स-लॉगिंग कक्षाएं jcl-over-slf4j द्वारा प्रदान की जाएंगी। यह निम्नलिखित पोम फ़ाइल टुकड़ा में तब्दील हो:

<dependency> 
    <groupId>commons-logging</groupId> 
    <artifactId>commons-logging</artifactId> 
    <version>1.1.1</version> 
    <scope>provided</scope> 
</dependency> 

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>jcl-over-slf4j</artifactId> 
    <version>1.7.21</version> 
</dependency> 

पहले निर्भरता घोषणा अनिवार्य रूप से कहा गया है कि कॉमन्स-लॉगिंग "किसी भी तरह" होगा अपने वातावरण द्वारा प्रदान की। दूसरी घोषणा में आपके प्रोजेक्ट में jcl-over-slf4j शामिल है। jcl-over-slf4j कॉमन्स-लॉगिंग के लिए एक संपूर्ण बाइनरी-संगत प्रतिस्थापन है, पहला दावा सत्य हो जाता है। दुर्भाग्यवश, प्रदान किए गए दायरे में कॉमन्स-लॉगिंग की घोषणा करते समय नौकरी किया गया, आपका आईडीई, उदा। ग्रहण, अभी भी आपके आईडीई द्वारा देखे गए प्रोजेक्ट के क्लास पथ पर कॉमन्स-लॉगिंग.जर रखेगा। आपको सुनिश्चित करना होगा कि jcl-over-slf4j.jar comons-logging.jar से पहले आपके आईडीई द्वारा दिखाई दे रहा है।

एसएलएफ 4 जे दस्तावेज अधिक विकल्प देता है, यह मेरे लिए काम करता है।