SLF4J: Gagal memuat kelas "org.slf4j.impl.StaticLoggerBinder". kesalahan

115
  • Mengenai Eclipse IDE ( Indigo , Juno dan Kepler (versi 32 dan 64 bit))
  • Platform : Windows , Ubuntu , Mac
  • versi m2e : 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 ,
    1.4.0.20130601-0317

Informasi Umum

Kesalahan di atas muncul setelah memperbarui m2e ke versi 1.1. Dengan menghapus m2e 1.1 dan mengembalikan ke m2e 1.0 semuanya bekerja dengan baik. Saya mencoba mengulangi masalah di Windows dan Ubuntu dan itu memberi saya kesalahan yang sama persis. Berbagai konfigurasi slf4j-api dan logback telah diuji, tetapi tampaknya tidak ada yang berhasil.

Error ini muncul di project maven mana pun bahkan tanpa mendeklarasikan dependensi slf4j .

  • Proyek Maven Baru -> maven-archetype-quickstart

    dan

  • Proyek Maven Baru -> Proyek sederhana tanpa pemilihan arketipe

    hasil untuk

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

Menguji lingkungan dan konfigurasi

Diuji dengan Eclipse Indigo dan Eclipse Juno (keduanya 32 dan 64 bit) di Mac, 32 bit di Ubuntu, serta 64 dan 32 bit di Windows. Menguji penginstalan baru Juno Classic , alat Juno Modeling , Kepler Standard , Kepler Modeling Tools dan menghasilkan kesalahan yang sama.

Kesalahan muncul dengan clean , install , test , deploy , generate-sources , validate , compile , package , integration-test , verifikasi dan kombinasi goal clean dengan tujuan lainnya. Itu juga muncul dengan parameter -e dan -X . Ada upaya untuk menghapus repositori m2e dan mengunduhnya dari awal tetapi sekali lagi tidak berhasil. Harus saya sebutkan bahwa itu diuji di 3 mesin yang berbeda dan kotak virtual semua sistem di atas tetapi menghasilkan kesalahan yang sama.

Mencoba semua konfigurasi logback berbeda (dari 1.0.4 hingga 1.0.13) yang menyelesaikan dependensi slf4j-api dan logback-core , tetapi semuanya menghasilkan error yang sama:

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

Mencoba semua konfigurasi slf4j-simple yang berbeda (dari 1.6.1 hingga 1.7.5) .

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

Mencoba semua konfigurasi log4j-over-slf4j yang berbeda (dari 1.6.1 hingga 1.7.5) .

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

Mencoba semua konfigurasi slf4j-jdk14 yang berbeda (dari 1.6.1 hingga 1.7.5) .

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

Mencoba semua konfigurasi berbeda (dari 1.6.1 hingga 1.7.5) slf4j-log4j12 .

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

Mencoba konfigurasi slf4j-nop 1.7.5 .

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

Terakhir, log disimpan dan dicetak meskipun ada kesalahan.


Cara mereproduksi kesalahan

  • Unduh Eclipse Juno, Indigo atau Kepler 32 atau 64 bit (Semua instalasi akan menyebabkan kesalahan yang sama).

  • Klik kanan pada proyek-> Runs As-> clean install (atau tujuan lain yang disebutkan di atas)

Baris pertama di konsol adalah

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 Proyek yang ada akan menghasilkan kesalahan yang sama setelah memperbarui versi m2e ke 1.1.0.20120530-0009 , 1.2.0.20120903-1050 , 1.3.0.20130129-0926 , 1.4.0.20130601-0317


Pembaruan

EDIT

situs pendukung m2e:

  • Pertanyaan di atas telah diposting sebagai bug di situs dukungan m2e dan jawaban dari Igor Fedorenko adalah itu

    Tidak ada rencana segera untuk menyembunyikan pesan ini.

    Untuk melihat bug di atas, silakan merujuk ke situs dukungan resmi m2e


EDIT 2

  • Indikasi kesalahan di atas adalah hadir juga untuk M2E versi 1.2.0.20120903-1050


EDIT 3

  • Indikasi kesalahan di atas adalah hadir juga untuk M2E versi 1.3.0.20130129-0926


EDIT 4

  • Indikasi kesalahan di atas adalah hadir juga untuk M2E versi 1.4.0.20130601-0317


EDIT 5

                              ***Reported FIXED***
  • Kesalahan di atas dilaporkan telah diperbaiki untuk m2e versi 1.5.0 / Luna M3 ( Target Milestone ). Versi tersebut belum tersedia untuk diunduh.
  • Luna M3 adalah dijadwalkan Nov. ke-15 .
  • Build dev terbaru tersedia di sini
  • Informasi lebih lanjut tentang tonggak m2e dapat Anda temukan di gudang utama m2e .
Konstantinos Margaritis
sumber
@EliranMalka Itu panjang tapi dengan alasan. Mencoba membantu orang untuk menghindari menanyakan pertanyaan yang sama dan memasukkan setiap detail yang mungkin diperlukan untuk memahami jika mereka menghadapi masalah yang sama tidak memberi saya terlalu banyak pilihan. :-)
Konstantinos Margaritis
Saya mendapat kesalahan ini ketika mencoba menggunakan data musim semi dengan neo4j yang saya miliki slf4jdi keduanya slf4j-api-1.7.7dan jcl-over-slf4j-1.7.7dan jika saya mencoba untuk menghapus siapa pun dari mereka, saya mendapatkan pesan kesalahan yang mengatakan bahwa Loggerkelas mereka hilang. Apa yang harus saya lakukan?
pengguna1885868
@KonstantinosMargaritis dapatkah Anda memberi tahu cara memperbaikinya dengan pom.xml, saya bisa membuatnya bekerja pada pengaturan lokal tetapi pada jenkins itu selalu gagal.
vikramvi
Apa pengaturan Anda saat ini @vikramvi?
Konstantinos Margaritis
@Konstantinosaritis terima kasih telah kembali pada ini. Saya menyadari maven adalah versi 3.0 di Linux yang ditingkatkan ke versi terbaru dan mencoba lagi. ini memperbaiki masalah. Tetapi harus menghabiskan sepanjang hari mencoba mencari tahu apa yang mungkin salah. Terima kasih.
vikramvi

Jawaban:

75

Saya juga dapat mengonfirmasi kesalahan ini.

Solusi: adalah menggunakan maven eksternal di dalam m2eclipse, bukan menggunakan maven tertanam.

Itu dilakukan dalam tiga langkah:

1 Instal maven di mesin lokal ( mesin uji adalah Ubuntu 10.10)

mvn --version

Apache Maven 2.2.1 (rdebian-4) Versi Java: 1.6.0_20 Java home: / usr / lib / jvm / java-6-openjdk / jre Lokal default: de_DE, pengkodean platform: UTF-8 Nama OS: "linux" versi: "2.6.35-32-generic" arch: "amd64" Keluarga: "unix"

2 Jalankan maven secara eksternal tautkan cara menjalankan maven dari konsol

> 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 di dalam m2eclipse: beralih dari pakar tertanam ke pakar lokal

  • mencari tahu di mana dir pakar lokal instalasi rumah ( mvn --versionatau google untuk Anda MAVEN_HOME, bagi saya ini membantu saya yang /usr/share/maven2)
  • di Menu eclipse-> Window-> Preferences-> Maven-> Instalasi-> masukkan string itu. Maka Anda harus beralih ke pakar eksternal baru Anda.
  • kemudian jalankan Proyek Anda sebagai contoh "tes maven".

Pesan kesalahan harus hilang.

tverrbjelke
sumber
1
Saya menerima jawaban Anda karena ini adalah satu-satunya solusi untuk melewati kesalahan yang mengganggu. Terima kasih banyak atas jawaban analitis Anda. :) ..
Konstantinos Margaritis
3
hmm saya menggunakan Windows dan mengubah ke instalasi eksternal baru, namun kesalahan masih ada !?
stefan.at.wpf
4
maaf, berhasil. Perhatikan bahwa ada opsi untuk runtime maven (internal / eksternal) pada konfigurasi yang dijalankan. jadi jika Anda menggunakan yang disimpan, pastikan untuk memperbaruinya.
stefan.at.wpf
@ stefan.at.wpf Senang mendengarnya berhasil. Jika mau, Anda dapat berlangganan bug tersebut di milis dan Anda dapat memperoleh informasi jika ada perubahan.
Konstantinos Margaritis
2
Bagi saya, #mvn --versionlebih mudah untuk menampilkan MAVEN_HOME.
biaobiaoqi
25

Ada dokumentasi di situs SLf4J untuk mengatasi ini. Saya mengikuti itu dan menambahkan slf4j-simple-1.6.1.jar ke aplikasi saya bersama dengan slf4j-api-1.6.1.jar yang sudah saya miliki. Ini menyelesaikan masalah saya

slf4j

Mohammed Irfan Tirupattur
sumber
4
ini berfungsi, di maven dapat menambahkan: <dependency> <groupId> org.slf4j </groupId> <artifactId> slf4j-simple </artifactId> <version> 1.XX </version> </dependency> // Cukup ganti dengan versi Anda
Enrique San Martín
@ Mohammed Irfan mungkin saya perlu menambahkan twojar ini di folder libs di eclipse?
Erum
1
Saya menggunakan versi Maven yang lebih baru dan telah mengikuti langkah-langkah di atas, tetapi ini adalah jawaban yang menyebabkan masalah tersebut hilang - terima kasih :)
Rob Wilson
15

Jika Anda menggunakan Gradle, tambahkan ini:

dependencies { 
... 
compile "org.slf4j:slf4j-simple:1.7.9" 
... 
}
Dias
sumber
Ia bekerja di sini dengan Gradle !! Bisakah Anda menjelaskan apa yang terjadi ketika kami menambahkan perpustakaan itu?
Felipe Pereira
5

Memiliki kesalahan serupa dengan hasil yang sama dengan Gradle dan mampu mengatasinya dengan mengikuti:

//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'

Baris komentar keluar adalah salah satu yang menyebabkan output kesalahan. Saya yakin Anda dapat mentransfer ini ke Maven.

tomasb
sumber
3

Anda belum menentukan versi dalam file dependensi maven Anda mungkin itu sebabnya tidak memilih jar terbaru
Dan Anda perlu ketergantungan lain dengan slf4j-log4j12id artefak.
Sertakan ini di file pom Anda

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

Beri tahu saya jika kesalahan masih belum teratasi.
Saya juga merekomendasikan Anda untuk melihat tautan ini

khan
sumber
3
Semua versi yang disebutkan telah diperiksa. Saya tidak menyatakannya di sana untuk menghindari pengulangan. Tag sengaja dikosongkan. Silakan lihat bahwa masalah di atas telah diposting sebagai bug ke situs dukungan m2e dan tidak ada cara untuk mengatasi kesalahan di atas kecuali ditekan oleh pengembang m2e. Saya telah membaca situs web berkali-kali dan saya menyertakan semua perpustakaan yang mungkin dapat menyelesaikan masalah. Sayangnya tidak ada konfigurasi yang berhasil karena ini berkaitan dengan m2e daripada dependensi yang dideklarasikan. Kesalahan di atas tidak muncul di konsol maven atau Netbeans. HANYA di Eclipse.
Konstantinos Margaritis
1
slf4j-log4j12 adalah binding lain bersama dengan slf4j-simple, slf4j-jdk14, dan logback-classic. Salah satu dari ketergantungan di atas seharusnya telah menyelesaikan masalah dengan pengikatan. Seperti yang saya jelaskan sebelumnya, masalahnya ada pada m2e. Terima kasih.
Konstantinos Margaritis
3

Tempel kode ini ke file pom.xml Anda. Ini berhasil untuk saya.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
</dependency>
james25
sumber
Ini memecahkan kesalahan "org.slf4j.impl.StaticLoggerBinder", tetapi sekarang mencatat semuanya, saya meletakkan log4j.xml dan log4j.properties (satu per satu) di src / test / resources, sekarang semua kerangka kerja dalam proyek saya sedang mencatat banyak pesan kecuali logging saya sendiri.
OJVM
1

Telah lebih dari melihat masalah yang muncul itu. Percayalah ini akan menjadi bacaan yang baik untuk orang lain yang datang ke sini dengan masalah yang sama:

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

Pangeran
sumber
tolong berikan jawaban lengkap, bukan hanya tautan.
slfan
@Prince Jika Anda membaca deskripsi pertanyaan, Anda dapat menemukan bagian yang mengatakan "Untuk melihat bug di atas, silakan merujuk ke situs dukungan resmi m2e" yang menunjuk ke url yang telah Anda sebutkan.
Konstantinos Margaritis
Ups .. Saya buruk. Permintaan maaf yang tulus!
Pangeran
1

Saya memiliki masalah serupa untuk aplikasi Spring Boot - Gradle saya yang berjalan di Eclipse Luna. Saya bisa mengatasinya dengan menambahkan entri secara manual di proyek saya .classpath

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

Ide adalah mengikuti ini solusi . Tetapi bagaimana menerapkannya tergantung kasus ke kasus. Salah satu cara memperbaikinya adalah yang saya gunakan di atas.

Semoga ini membantu.

Vipul Agarwal
sumber
0

Ini bukan pesan kesalahan tapi peringatan. Ini dijelaskan dengan sangat jelas di situs web mereka sebagai:

Peringatan ini, yaitu bukan kesalahan, pesan akan dilaporkan jika tidak ada penyedia SLF4J yang dapat ditemukan di jalur kelas. Menempatkan satu (dan hanya satu) slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar, atau logback-classic.jar di jalur kelas akan menyelesaikan masalah. Perhatikan bahwa penyedia ini harus menargetkan slf4j-api 1.8 atau yang lebih baru.

Jika penyedia tidak ada, SLF4J akan menjadi default ke penyedia pencatat tanpa operasi (NOP).

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

avenugopalan
sumber
0

Saya memiliki masalah yang sama dalam menulis program produser Kafka menggunakan java. Kesalahan ini terjadi karena pustaka slf4j yang salah. gunakan di bawah ini ketergantungan slf4j-simple maven yang akan memperbaiki masalah Anda.

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