2013-10-29 7 views
6

मुझे अपने निर्भरता पेड़ और एकाधिक SLF4J बाध्यकारी में समस्या है। ये अपवाद मैं मिलता है :: क्या मैं अब तक पता चला कि आम तौर पर यह केवल एक चेतावनी का कारण बनता है, लेकिन मेरे मामले में यह चलने से मेरा कार्यक्रम को रोकने के लिए लगता हैएकाधिक एसएलएफ 4 जे बाइंडिंग त्रुटि का कारण बनता है?

SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/Users/FischerNi/.m2/repository/org/slf4j/slf4j-jdk14/1.5.3/slf4j-jdk14-1.5.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/C:/Users/FischerNi/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: slf4j-api 1.6.x (or later) is incompatible with this binding. SLF4J: Your binding is version 1.5.5 or earlier. SLF4J: Upgrade your binding to version 1.6.x. or 2.0.x Exception in thread "main" java.lang.NoSuchMethodError: org.slf4j.impl.StaticLoggerBinder.getSingleton()Lorg/slf4j/impl/StaticLoggerBinder;

और इस के प्रासंगिक टुकड़ा है मेरी निर्भरता: net.lightbody.bmp browsermob-प्रॉक्सी 2.0 बीटा-8

<!-- LOGGING DEPENDENCIES - LOG4J --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
    </dependency> 

किसी कृपया मुझे बताओ कैसे इस समस्या को हल करने के लिए कर सकते हैं?

+0

आप अलग-अलग संस्करणों (1.5.3 और 1.6.1, त्रुटि संदेश के अनुसार) के साथ कई बार 'slf4j-log4j12' कई बार (सीधे या परोक्ष रूप से किसी अन्य निर्भरता के माध्यम से) शामिल हैं। – Jesper

उत्तर

15

इस के समाधान के लिए जोड़ी हैं:

  • सुनिश्चित करें कि आप केवल एक slf4j जार को शामिल करें (शायद उच्च संस्करण के साथ) यदि आप अपने वर्ग के रास्ते पर विभिन्न संस्करणों के साथ उनमें से जोड़ी।
  • कभी-कभी एकाधिक slf4j जार को बाहर करना संभव नहीं हो सकता है, क्योंकि इन्हें आंतरिक रूप से अन्य जारों द्वारा उपयोग किया जा सकता है, जो आपके वर्ग पथ पर हैं। ये आश्रित जार slf4j जार के विभिन्न संस्करणों को संदर्भित कर सकता है जो आपके एप्लिकेशन को असफल होने का कारण बनता है। ऐसे मामलों में, सुनिश्चित करें कि SLF4J jars का उपयोग करके अन्य जार से पहले एसएलएफ 4j के उच्च संस्करण के साथ जार मिला है। यह सुनिश्चित करेगा कि आपका जावा प्रोग्राम एसएलएफ 4 जे का नवीनतम संस्करण उठाएगा जो स्पष्ट रूप से पिछड़ा संगत है।
+0

धन्यवाद! दूसरा समाधान मेरे लिए काम किया। – Biffy

+0

@ अंकुर और मैं ग्रहण में कैसे सुनिश्चित करूं कि यह नवीनतम उठाएगा? –

+3

अपने प्रोजेक्ट बिल्ड पथ में सबसे पहले नवीनतम निर्दिष्ट करें। अपने प्रोजेक्ट की ऑर्डर चेक .classpath फ़ाइल को सत्यापित करने के लिए। यह उस क्रम को दिखाएगा जिसमें जार फाइलें शामिल की गई हैं। –

1

मैं बजाय Maven में निम्नलिखित निर्भरता उपयोग करने के लिए सुझाव है,

<dependency> 
<groupId>log4j</groupId> 
<artifactId>log4j</artifactId> 
<version>1.2.17</version> 
</dependency> 

यह मेरी समस्या को हल किया है, हालांकि मैं slf4j का उपयोग कर अधिक निर्भरता है।

0

अपनी परियोजना अन्य परियोजना और अन्य एक का उपयोग slf4j पर निर्भरता के रूप में अच्छी तरह से साथ उपयोग करने के लिए excusion

<exclusions> 
    <exclusion> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
    </exclusion> 
</exclusions> 
0

यह तब हो जब वहाँ एक से अधिक जार है अलग संस्करण कोशिश है। यह जांचने के लिए कि क्या जार पहले से उपलब्ध है या परियोजना पर नहीं जा रहा है -> जावा संसाधन -> मैवेन निर्भरताएं और जांचें कि जार पहले से उपलब्ध है या नहीं। यदि यह उपलब्ध है और फिर भी आपको त्रुटि मिलती है। फिर उस jar फ़ाइल का स्थान .m2 \ संसाधन फ़ोल्डर में ढूंढें और उस जार फ़ाइल से संबंधित पूर्ण फ़ोल्डर को हटाएं, फिर एक नया संस्करण डाउनलोड करें और इसे अपनी प्रोजेक्ट में आयात करें। :)

कभी-कभी मुझे त्रुटियां मिलती हैं, यहां तक ​​कि मैंने अपनी pom.xml फ़ाइल में सही संस्करण के साथ सही जार फ़ाइल डाउनलोड की है। तो मुझे इसे अपने pom.xml से निकालना होगा और उस जार को Google से डाउनलोड करें और इसे मेरे प्रोजेक्ट में आयात करें। सुनिश्चित करें कि आप इसे करते हैं तो परियोजना प्रॉपर्टीज -> परिनियोजन असेंबली टैब-> जोड़ें पर क्लिक करें -> जावा बिल्ड पथ प्रविष्टियां और उस जार फ़ाइल पर क्लिक करें और लागू करें पर क्लिक करें।

संबंधित मुद्दे