SLF4J: “org.slf4j.impl.StaticLoggerBinder” sınıfı yüklenemedi. hata


115
  • İlgili Eclipse IDE ( İndigo , Juno ve Kepler (32 ve 64 bit sürümleri))
  • Platformlar : Windows , Ubuntu , Mac
  • m2e sürümü : 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 ,
    1.4.0.20130601-0317

Genel Bilgi

Yukarıdaki hata m2e'yi 1.1 sürümüne güncelledikten sonra geldi. M2e 1.1'i kaldırarak ve m2e 1.0'a geri dönerek her şey yolunda gitti. Sorunu Windows ve Ubuntu'da tekrar etmeye çalıştım ve bana aynı hatayı verdi. Birçok slf4j-api ve logback yapılandırması test edildi, ancak hiçbiri çalışmıyor gibi görünüyor.

Hata, slf4j bağımlılığını bildirmeden bile herhangi bir maven projesinde görünür .

  • Yeni Maven Projesi -> maven-archetype-hızlı başlangıç

    ve

  • Yeni Maven Projesi -> Arketip seçimi olmadan basit proje

    sonuç

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

Ortamları ve konfigürasyonları test etme

Eclipse Indigo ve Eclipse Juno (her ikisi de 32 ve 64 bit) ile, Ubuntu'da 32 bit ve Windows'ta 64 ve 32 bit ile test edilmiştir. Juno Classic , Juno Modeling araçları , Kepler Standardı , Kepler Modeling Tools'un yeni kurulumları test edildi ve aynı hatayı üretti.

Hata, temizleme , yükleme , test etme , dağıtma , kaynak oluşturma , doğrulama , derleme , paketleme , entegrasyon testi , doğrulama ve geri kalan hedeflerle temiz hedef kombinasyonlarında ortaya çıkar. Ayrıca -e ve -X parametreleriyle birlikte görünür . M2e deposunu silme ve sıfırdan indirme girişiminde bulunuldu, ancak yine başarısız oldu. Yukarıdaki sistemlerin hepsinde 3 farklı makine ve sanal kutuda test edildiğini ancak aynı hatayı ürettiğini söylemeliyim.

Slf4j-api ve logback-core bağımlılıklarını çözen tüm farklı geri dönüş yapılandırmalarını (1.0.4'ten 1.0.13'e) denedim , ancak hepsi aynı hatayı üretiyor:

<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version></version>
</dependency>

Tüm farklı ( 1.6.1'den 1.7.5'e ) slf4j-basit yapılandırmaları denedim .

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

Slf4j üzerinden farklı ( 1.6.1'den 1.7.5'e kadar ) log4j-over-slf4j yapılandırmalarını denedim .

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>log4j-over-slf4j</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

Tüm farklı ( 1.6.1'den 1.7.5'e ) slf4j-jdk14 yapılandırmalarını denedim .

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-jdk14</artifactId>
   <version></version>
   <scope>compile</scope>
</dependency>

Tüm farklı ( 1.6.1'den 1.7.5'e ) slf4j-log4j12 yapılandırmalarını denedim .

<dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-log4j12</artifactId>
     <version></version>
     <scope>compile</scope>
</dependency>

Güvenilir slf4j-nop 1.7.5 yapılandırması.

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-nop</artifactId>
  <version>1.7.5</version>
  <scope>compile</scope>
</dependency>

Son olarak, hataya rağmen günlükler kaydedilir ve yazdırılır.


Hatayı yeniden üretmenin yolları

  • Eclipse Juno, Indigo veya Kepler 32 veya 64 bit'i indirin (Tüm kurulumlar aynı hataya neden olur)

    • M2e'yi yükleyin - Eclipse için Maven Entegrasyonu

      VEYA

    • M2e sürümünüzü 1.1.0.20120530-0009 veya 1.2.0.20120903-1050 veya 1.3.0.20130129-0926 veya 1.4.0.20130601-0317'ye güncelleyin )


    • Dosya-> Yeni-> Diğer-> Maven Projesi'ni seçin-> İleri'yi tıklayın->
      Katalogdan maven-archetype-hızlı başlangıç öğesini seçin-> Bitir

      VEYA

    • Dosya-> Yeni-> Diğer-> Maven Projesi'ni seçin-> İleri'ye tıklayın-> Basit bir proje oluştur'u seçin (arketip seçimini atlayın) -> Yapı bilgisini tamamlayın-> Bitir

  • Projeye sağ tıklayın-> Farklı Çalıştır-> temiz kurulum (veya yukarıda belirtilen herhangi bir hedef)

Konsoldaki ilk satır olacak

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

PS Mevcut projeler, m2e sürümünü 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 , 1.4.0.20130601-0317'ye güncelledikten sonra aynı hatayı üretecek


Güncellemeler

DÜZENLE

m2e destek sitesi:

  • Yukarıdaki soru m2e destek sitesinde bir hata olarak yayınlandı ve Igor Fedorenko'nun cevabı şuydu:

    Bu mesajı bastırmak için acil bir plan yok.

    Yukarıdaki hatayı görüntülemek için lütfen m2e resmi destek sitesine bakın


DÜZENLEME 2

  • Yukarıdaki hata göstergesi , bu da M2E sürüm 1.2.0.20120903-1050


DÜZENLEME 3

  • Yukarıdaki hata göstergesi , bu da M2E sürüm 1.3.0.20130129-0926


DÜZENLE 4

  • Yukarıdaki hata göstergesi , bu da M2E sürüm 1.4.0.20130601-0317


DÜZENLE 5

                              ***Reported FIXED***
  • Yukarıdaki hata m2e sürüm 1.5.0 / Luna M3 ( Hedef . Sürüm henüz indirilemiyor.
  • Luna M3 edilir Kasım 15 için planlanan .
  • En son geliştirici derlemesi mevcut burada
  • M2e kilometre taşları hakkında daha fazla bilgiyi m2e ana deposunda bulabilirsiniz .

@EliranMalka Uzun ama bir nedeni var. İnsanların aynı soruları sormaktan kaçınmalarına ve aynı problemle karşı karşıya olup olmadıklarını anlamak için gerekli olabilecek her detayı dahil etmelerine yardımcı olmaya çalışmak bana çok fazla seçenek sunmadı. :-)
Konstantinos Margaritis

Neo4j ile kullanım bahar verilerine çalışırken ben var bu hata var slf4jhem de slf4j-api-1.7.7ve jcl-over-slf4j-1.7.7ve ben de onlardan kimseyi kaldırmaya çalışırsanız onların belirten bir hata mesajı alıyorum Loggersınıf eksik. Ne yapmalıyım?
user1885868

@KonstantinosMargaritis, bunu pom.xml ile nasıl düzelteceğinizi söyler misiniz, yerel kurulumda çalıştırabilirim ama jenkins'de her zaman başarısız oluyor.
vikramvi

Şu anki kurulumunuz nedir @vikramvi?
Konstantinos Margariti

@KonstantinosMargaritis bu konuya geri döndüğünüz için teşekkürler. Maven'in Linux'ta 3.0 sürümü olduğunu fark ettim ve en son sürüme yükseltildim ve tekrar denedim. bu sorunu çözdü. Ama neyin yanlış olabileceğini bulmaya çalışmak için bütün günü harcamak zorunda kaldı. Yine de teşekkürler.
vikramvi

Yanıtlar:


75

Bu hatayı da teyit edebilirim.

Çözüm: Gömülü maven yerine m2eclipse içinde harici maven kullanmaktır .

Bu, üç adımda yapılır :

1 maven'i yerel makineye yükleyin (test makinesi Ubuntu 10.10'du)

mvn --version

Apache Maven 2.2.1 (rdebian-4) Java sürümü: 1.6.0_20 Java ana sayfası: / usr / lib / jvm / java-6-openjdk / jre Varsayılan yerel ayar: de_DE, platform kodlaması: UTF-8 işletim sistemi adı: "linux" sürüm: "2.6.35-32-jenerik" arch: "amd64" Aile: "unix"

2 maven'i harici olarak çalıştırın, konsoldan maven nasıl çalıştırılır

> cd path-to-pom.xml
> mvn test
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Simple
    [INFO]    task-segment: [test]
    [INFO] ------------------------------------------------------------------------
    [...]
    [INFO] Surefire report directory: [...]/workspace/Simple/target/surefire-reports
    
    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Running net.tverrbjelke.experiment.MainAppTest
    Hello World
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.042 sec
    
    Results :
    
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
    
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESSFUL
    [INFO] ------------------------------------------------------------------------
    [...]

3 m2eclipse içinde: gömülü maven'den geçiş yerel

  • yerel maven ev kurulum dizininin nerede olduğunu öğrenin ( mvn --versionveya sizin MAVEN_HOMEiçin google , benim için bu bana yardımcı oldu olduğunu /usr/share/maven2)
  • tutulmada Menü-> Pencere-> Tercihler-> Maven-> Kurulum-> bu dizeyi girin. O halde yeni dış ortamınıza geçmelisiniz.
  • sonra Projenizi örneğin "maven testi" olarak çalıştırın.

Hata mesajı gitmiş olmalı.


1
Can sıkıcı hatayı atlatmak için tek geçici çözüm olduğu için cevabınızı kabul ediyorum. Analitik cevabınız için çok teşekkür ederim. :) ..
Konstantinos Margaritis

3
hmm Windows'dayım ve yeni harici kurulumlara geçtim, ancak hata hala var !?
stefan.at.wpf

4
üzgünüm işe yarıyor. Çalıştırma yapılandırmalarında maven çalışma zamanı (dahili / harici) için bir seçenek olduğunu unutmayın. bu nedenle, kaydedilmiş bir tane kullanıyorsanız, onu güncellediğinizden emin olun.
stefan.at.wpf

@ stefan.at.wpf Çalıştığını duymak güzel. Dilerseniz hatanın mail listesine üye olabilir, bir şey değiştiğinde haberdar olabilirsiniz.
Konstantinos Margaritis

2
Benim #mvn --versioniçin MAVEN_HOME'u göstermek uygundur.
biaobiaoqi

25

SLf4J sitesinde bunu çözmek için bir belge var. Bunu takip ettim ve uygulamama slf4j-api-1.6.1.jar'ı ekledim ve zaten sahip olduğum slf4j-api-1.6.1.jar bu sorunu çözdü.

slf4j


4
bu çalışır, maven'de şunu ekleyebilir: <dependency> <groupId> org.slf4j </groupId> <artifactId> slf4j-simple </artifactId> <version> 1.XX </version> </dependency> // Sadece şununla değiştirin: senin versiyonun
Enrique San Martín

@Mohammed Irfan bu iki kişiyi tutulmada libs klasörüne eklemem gerekebilir mi?
Erum

1
Maven'in daha sonraki bir sürümünü kullanıyorum ve yukarıdaki adımları izledim, ancak sorunun çözülmesine neden olan cevap
Rob Wilson

15

Gradle kullanıyorsanız şunu ekleyin:

dependencies { 
... 
compile "org.slf4j:slf4j-simple:1.7.9" 
... 
}

Burada Gradle ile çalışıyor !! Bu kitaplığı eklediğimizde ne olduğunu açıklayabilir misiniz?
Felipe Pereira

5

Gradle ile aynı sonuçla benzer bir hata oluştu ve aşağıdaki şekilde çözebildi:

//compile 'org.slf4j:slf4j-api:1.7.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.1'

Yorumsuz satır, hata çıktısına neden olan satırdır. Bunu Maven'e aktarabileceğine inanıyorum.


3

Maven bağımlılık dosyanızdaki sürümü belirtmediniz, bu yüzden en son
jar'ı seçmiyor olabilir. Ayrıca slf4j-log4j12yapay kimlik ile başka bir bağımlılığa ihtiyacınız var .
Bunu pom dosyanıza ekleyin

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

Hata hala çözülmediyse bana bildirin. Bu bağlantıyı
görmenizi de tavsiye ederim


3
Belirtilen tüm versiyonlar kontrol edildi. Tekrarlanmaması için orada ilan etmedim. Etiket kasıtlı olarak boş bırakılmıştır. Lütfen yukarıdaki sorunun m2e destek sitesine bir hata olarak gönderildiğine ve m2e geliştiricileri tarafından bastırılmadıkça yukarıdaki hatayı çözmenin bir yolu olmadığına bakın. Web sitesini defalarca okudum ve sorunu çözebilecek tüm olası kütüphaneleri ekledim. Ne yazık ki hiçbir yapılandırma işe yaramadı çünkü bildirilen bağımlılıklar yerine m2e ile ilgisi var. Yukarıdaki hata maven konsolunda veya Netbeans.ONLY Eclipse'de gösterilmez.
Konstantinos Margaritis

1
slf4j-log4j12, slf4j-simple, slf4j-jdk14 ve logback-classic ile birlikte başka bir bağlayıcıdır. Yukarıdaki bağımlılıklardan herhangi biri sorunu bağlamayla çözmüş olmalıdır. Daha önce açıkladığım gibi sorun m2e ile ilgilidir. Yine de teşekkürler.
Konstantinos Margaritis

3

Bu kodu pom.xml dosyanıza yapıştırın. Benim için çalışıyor.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>

"Org.slf4j.impl.StaticLoggerBinder" hatasını çözüyor, ancak şimdi her şeyi günlüğe kaydediyor, log4j.xml ve log4j.properties (birer birer) src / test / resources içine koyuyorum, şimdi projemdeki tüm çerçeveler günlüğe kaydediliyor kendi kayıtlarım dışında tonlarca mesaj.
OJVM

1

Sorunu su yüzüne çıkardıktan sonra aradım. İnanın bu, aynı konuyla buraya gelenler için iyi bir okuma olacak:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=387064


lütfen tam bir yanıt verin, yalnızca bir bağlantı değil.
slfan

@Prince Soru açıklamasını okursanız, "Yukarıdaki hatayı görüntülemek için lütfen m2e resmi destek sitesine bakın" yazan ve bahsettiğiniz url'ye işaret eden bir bölüm bulabilirsiniz.
Konstantinos Margaritis

Oops .. Benim hatam. En içten özürlerimi sunarım!
Prince

1

Eclipse Luna'da çalışan Spring Boot - Gradle uygulamam için benzer bir sorun yaşadım. Projemin .classpath dosyasına manuel olarak bir girdi ekleyerek sorunu çözebilirim

<classpathentry sourcepath="C:/Users/<username>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.7/3150039466ad03e6ef1c7ec1c2cbb0d96710cf64/slf4j-simple-1.7.7-sources.jar" kind="lib" path="C:/Users/<username>/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-simple/1.7.7/8095d0b9f7e0a9cd79a663c740e0f8fb31d0e2c8/slf4j-simple-1.7.7.jar"/>

Fikir takip etmektir bu çözümü . Ancak nasıl uygulanacağı duruma göre değişir. Düzeltmenin bir yolu, yukarıda kullandığım yol.

Bu yardımcı olur umarım.


0

Bu bir hata mesajı değil, bir uyarıdır. Web sitelerinde şu şekilde açıklanmıştır:

Bu uyarı, yani bir hata değil mesajı, sınıf yolunda hiçbir SLF4J sağlayıcısı bulunamadığında raporlanır. Sınıf yoluna slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar veya logback-classic.jar dosyalarının birini (ve yalnızca birini) yerleştirmek sorunu çözecektir. Bu sağlayıcıların slf4j-api 1.8 veya sonrasını hedeflemesi gerektiğini unutmayın.

Bir sağlayıcının yokluğunda, SLF4J varsayılan olarak işlemsiz (NOP) kayıt sağlayıcı sağlayıcısına sahip olacaktır.

https://www.slf4j.org/codes.html#StaticLoggerBinder


0

Kafka yapımcı programını java kullanarak yazarken de aynı sorunu yaşadım. Bu hata, yanlış slf4j kitaplığı nedeniyle geliyor. Sorununuzu çözecek slf4j-simple maven bağımlılığının altında kullanın.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.