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

619

Aplikasi saya akan digunakan pada tcServer dan WebSphere 6.1. Aplikasi ini menggunakan ehCache dan memerlukan slf4j sebagai ketergantungan. Sebagai hasilnya saya menambahkan tabung slf4j-api.jar (1.6) ke bundle file perang saya.

Aplikasi berfungsi dengan baik di tcServer kecuali untuk kesalahan berikut:

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.

Namun, ketika saya menggunakan di WebSphere saya mendapatkan java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder.

Juga ditemani oleh Failed to load class "org.slf4j.impl.StaticMDCBinder"

Saya telah memeriksa classpath kedua server aplikasi dan tidak ada toples slf4j lainnya.

Adakah yang tahu apa yang mungkin terjadi di sini?

JJ180
sumber
Artikel ini menyelesaikan masalah saya
Akuntan

Jawaban:

517

Saya memiliki masalah yang sama dengan WebSphere 6.1. Seperti yang ditunjukkan Ceki, ada banyak toples yang digunakan WebSphere dan salah satunya menunjuk ke versi slf4j yang lebih lama.

Fallback No-Op hanya terjadi dengan slf4j -1.6+ sehingga apapun yang lebih tua dari itu akan membuang pengecualian dan menghentikan penyebaran Anda.

Ada dokumentasi di situs SLf4J yang menyelesaikan ini. Saya mengikuti itu dan menambahkan slf4j-simple-1.6.1.jarke aplikasi saya bersama dengan slf4j-api-1.6.1.jaryang sudah saya miliki.

Ini menyelesaikan masalah saya. Semoga ini bisa membantu orang lain yang memiliki masalah ini.

Prasanna
sumber
4
Ya, kesalahannya juga disebutkan di sini - slf4j.org/manual.html Tetapi saya mendapatkan kesalahan baru sekarang - Disebabkan oleh: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
david blaine
1
"Seperti yang ditunjukkan Ceki, ada banyak toples yang digunakan WebSphere dan salah satunya menunjuk ke versi slf4j yang lebih lama." - Begitu banyak untuk Maven merawat dependensi! Benar-benar lelucon.
AndroidDev
167
Hai, Anda pengguna MAVEN: mvnrepository.com/artifact/org.slf4j/slf4j-simple/1.6.2
Sergio
2
Saya menggunakan 1,7 dan memiliki masalah yang sama. Saya menambahkan slf4j-simple-1.7.jar dan sekarang masalahnya terpecahkan.
littletiger
1
Ini tidak berhasil untuk saya. Stoples slf4j-simple tidak mengambil log4j.properties. Sebagai gantinya, saya menggunakan implementasinya dengan menambahkan slf4j-log4j12 dan tabung log4j, yang bekerja dengan baik untuk saya.
flyrain
379

Ini untuk mereka yang datang ke sini dari pencarian google.

Jika Anda menggunakan pakar, tambahkan saja yang berikut ini

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

Atau

   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
       <version>1.7.5</version>
   </dependency>
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
       <version>1.6.4</version>
   </dependency>
Igor Katkov
sumber
1
Apakah ada alasan untuk slf4j-simpletidak menggunakan versi yang sama slf4j-api? Mereka mungkin akan bekerja sama dengan baik, tetapi saya pikir itu lebih aman dan praktik yang lebih baik secara umum untuk meminta mereka menggunakan versi yang sama. Juga, jika Anda perlu mengaktifkan logging hanya konsol, misalnya, ketika menjalankan tes unit, maka slf4j-simpletampaknya sudah cukup (itu bagi saya sekalipun).
Ivaylo Slavov
23
AFAIK Anda seharusnya hanya memiliki 1 impl slf4j, yaitu slf4j-log4j12 ATAU slf4j-simple, tidak keduanya.
Ondra Žižka
@Igor KatKov ini hanya bekerja pada mesin lokal tetapi mendapatkan kesalahan yang sama pada Jenkins tidak yakin apa yang salah. dapatkah Anda jelaskan
vikramvi
slf4j-api memerlukan konfigurasi yang tidak tersedia saat Anda pertama kali menjalankannya (dan belum mengedit file konfigurasi apa pun). Menggunakan slf4j-simple akan memungkinkan Anda untuk menggunakan Logger dasar tanpa mengkonfigurasi file apa pun kecuali WYSIWYG. Anda kemudian dapat kembali ke slf4j-api setelah Anda belajar mengkonfigurasi file dan menyesuaikan output Logger sesuka Anda. (Masih belajar di mana ada dan bagaimana mengeditnya sendiri)
chrips
53

Cukup tambahkan ini ke pom.xml Anda :

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-simple</artifactId>
  <version>1.7.21</version>
</dependency>
Benny Neugebauer
sumber
3
Solusinya bekerja untuk saya; Layak menunjuk ke dokumentasi (di mana saya menemukan kesalahan menjelaskan): slf4j.org/codes.html#StaticLoggerBinder
Witold Kaczurba
2
tidak ada yang lain selain ini yang berhasil bagi saya saat menjalankan contoh produsen kafka sederhana. terima kasih banyak!
Viren
@WoldoldKaczurba benar. Saya mengalami masalah yang sama saat menggunakan ketergantungan menggunakan pakar. Saya baru saja googled dan pergi ke slf4j.org/codes.html#StaticLoggerBinder yang menyatakan masalah dan solusinya. Saya menggunakan slf4j-api versi 1.7.25. Setelah memeriksa dokumentasi pada tautan yang disebutkan, saya hanya menggunakan <dependensi> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.25</version> </dependency>dan masalah teratasi
Mohammad Anas
Saya tidak mengerti maksud menggunakan Maven jika perpustakaan yang membutuhkan logger (mis. Setang yang membutuhkan slf4j) tidak menyatakannya di pom mereka. Pokoknya: terima kasih.
Eric Duminil
Dalam kasus saya, ini bukan solusi. Ini hanya menyembunyikan informasi, bahwa ada versi slf4j dan log4j yang tidak kompatibel atau plugin lain.
hariprasad
42

Anda perlu menambahkan berikut file jar di classpath Anda: slf4j-simple-1.6.2.jar. Jika Anda belum memilikinya, silakan unduh. Silakan merujuk ke http://www.slf4j.org/codes.html#multiple_bindings

Ashish
sumber
Tetapi saya tidak memiliki botol itu di jalan setapak tcServer saya, itulah yang membingungkan saya. Saya tidak mengerti bagaimana saya tidak membutuhkan botol tambahan di tcServer tetapi lakukan di WebSphere
JJ180
1
Bekerja untuk saya, dan jauh lebih sederhana daripada jawaban yang diterima. Versi 1.7.7 juga berfungsi.
La-comadreja
1
Saya sudah punya jul-to-slf4jdi saya pom.xmldan baru ditambahkan slf4j-simplesebelum dan itu berfungsi dengan baik.
slugmandrew
Bagaimana cara menambahkan file jar ke classpath?
Dean013
Tolong, bisakah Anda menjelaskan kepada saya apa jalur kelas? dimana? Saya tidak mengerti
Rose8525
36

Beberapa jawaban di sini merekomendasikan untuk menambahkan ketergantungan slf4j-simple ke file maven pom Anda. Anda mungkin ingin memeriksa versi terbaru.

Di https://mvnrepository.com/artifact/org.slf4j/slf4j-simple Anda akan menemukan versi terbaru dari Penjilidan Sederhana SLF4J. Pilih salah satu yang paling cocok untuk Anda (masih 1,7.26 dari 2019-02 adalah versi stabil pada 2019-07) dan memasukkannya ke pom.xml Anda.

Demi kenyamanan Anda, beberapa dependensi ditampilkan di sini - tetapi mungkin tidak diperbarui saat Anda membaca ini!

Versi Alpha 2019-10

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>2.0.0-alpha1</version>
 </dependency>

Versi Beta Februari 2019

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.8.0-beta4</version>
</dependency>

Versi Stabil 2019-12

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>1.7.30</version>
</dependency>

Saya menghapus bagian tes cakupan berkat komentar di bawah ini.

Wolfgang Fahl
sumber
6
mengapa Anda menggunakan <scope>test</scope>? Dalam pengalaman saya, saya setidaknya perlu runtimeruang lingkup untuk memastikan slf4j-simpleada di classpath. Ingin tahu bagaimana Anda dapat menggunakan ini hanya dengan testruang lingkup ...
ecoe
Terima kasih telah menunjukkan ini. Saya menghapus tag lingkup dari jawaban saya sesuai. Itu masalah potong & tempel - tautan yang saya berikan menyediakan ketergantungan beta dengan cara ini.
Wolfgang Fahl
27

Saya menghadapi kesalahan yang sama. Saya telah mengkonfigurasi slf4j-api, slf4j-log4j12 dan log4j, dalam pengembangan lokal saya. Semua konfigurasi baik-baik saja, tetapi ketergantungan slf4j-log4j12 yang saya salin dari mvnrepository memiliki cakupan pengujian <scope>test</scope>. Ketika saya menghapus ini semua hal baik-baik saja.

Beberapa kali kesalahan konyol mematahkan kepala kita;)

thangaraj
sumber
1
Terima kasih banyak! Saya memiliki masalah yang sama dan akan menyerah sampai saya menemukan posting Anda!
Ergodyne
1
Ini membantu saya juga
cod3min3
27

Terkadang kita harus melihat catatan dari warnin SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details..

Ini terjadi ketika tidak ada ikatan SLF4J yang sesuai yang dapat ditemukan di jalur kelas

Anda dapat mencari alasan mengapa peringatan ini datang.
Menambahkan satu dari jar dari *slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jaratau logback-classic.jar*untuk jalan kelas harus memecahkan masalah.

compile "org.slf4j:slf4j-simple:1.6.1"

misalnya menambahkan kode di atas ke Anda build.gradleatau kode yang sesuai pom.xmluntuk proyek pakar.

Edward
sumber
15

letakkan file slf4j-log4j12-1.6.4.jardi classpath akan melakukan trik.

batu333
sumber
6
atau tambahkan ketergantungan ke pom Anda <dependensi> <groupId> org.slf4j </groupId> <artifactId> slf4j-log4j12 </artifactId> </dependency>
enkor
11

Jika Anda menggunakan maven ke manajemen ketergantungan sehingga Anda bisa menambahkan ketergantungan berikut di pom.xml

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

Untuk pengguna non-Maven Cukup unduh perpustakaan dan masukkan ke classpath proyek Anda.

Di sini Anda dapat melihat detailnya: http://www.mkyong.com/wicket/java-lang-classnotfoundexception-org-slf4j-impl-staticloggerbinder/

shohan
sumber
1
Juga untuk pengguna pakar saya menemukan bahwa saya perlu menambahkan yang berikut ke pom.xml, yang juga membawa masuk-inti secara otomatis: <dependency> <groupId> ch.qos.logback </groupId> <artifactId> logback-classic </ artifactId> <version> 1.0.9 </version> </dependency>
Paul
2
This is not an error. This message tells you that you do not have any logger implementation (such as e.g. Logback) added in classpath, and therefore NOP (No Operation) log Cari komentar sarxos seperti yang disebutkan oleh @Paul perlu menambahkan logback-klasik. Pendekatan perubahan lain untuk <artifactId>slf4j-simple</artifactId>dari <artifactId>slf4j-api</artifactId>juga berhasil. Diilustrasikan di sini
Abhijeet
10

SLF4j adalah abstraksi untuk berbagai kerangka kerja logging . Oleh karena itu selain memiliki slf4j Anda perlu memasukkan kerangka logging Anda seperti log4j atau logback (dll) di classpath Anda.
Untuk mendapatkan gagasan, rujuk Langkah Bayi Pertama di http://logback.qos.ch/manual/introduction.html

Anver Sadhat
sumber
2
Menambahkan logback memperbaiki ini untuk saya. Saya menjatuhkan klasik logback terbaru ke pom (1.1.7) dan gagal karena ketergantungan slf4j terlalu tua (1.6.2). Menurunkan versi logback ke 1.0.0 dan membiarkan slf4j di 1.6.x berhasil, seperti halnya meningkatkan slf4j ke 1.7.20 dan meninggalkan logback di 1.1.7.
ECDragon
5

Slf4j adalah fasad untuk kerangka kerja logging yang mendasarinya seperti log4j, logback, java.util.logging.

Untuk terhubung dengan kerangka kerja yang mendasarinya, slf4j menggunakan binding.

  • log4j - slf4j-log4j12-1.7.21.jar
  • java.util.logging - slf4j-jdk14-1.7.21.jar dll

Kesalahan di atas terlempar jika tabung pengikat terlewatkan. Anda dapat mengunduh toples ini dan menambahkannya ke classpath.

Untuk ketergantungan pakar,

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

Ketergantungan ini selain slf4j-log4j12-1.7.21.jar, ini akan menarik slf4j-api-1.7.21.jar serta log4j-1.2.17.jar ke proyek Anda

Referensi: http://www.slf4j.org/manual.html

venkatesh mankena
sumber
Solusi Anda adalah satu-satunya yang bekerja untuk saya, terima kasih!
Edenshaw
5

Saya menghadapi masalah yang sama dengan aplikasi Spring-boot-2 dengan Java 9 library.

Menambahkan ketergantungan berikut di pom.xml saya memecahkan masalah bagi saya:

    <dependency>
        <groupId>com.googlecode.slf4j-maven-plugin-log</groupId>
        <artifactId>slf4j-maven-plugin-log</artifactId>
        <version>1.0.0</version>
    </dependency>
KayV
sumber
4

Dalam kasus Websphere, Anda memiliki versi slf4j-api.jar, 1.4.x. yang lebih lama atau 1.5.x berbaring di suatu tempat. Perilaku yang Anda amati di tcServer, yang gagal-ke NOP, terjadi pada versi slf4j 1.6.0 dan yang lebih baru. Pastikan Anda menggunakan slf4j-api-1.6.x.jar di semua platform dan tidak ada versi slf4j-api yang lebih lama ditempatkan di jalur kelas.

Ceki
sumber
Terima kasih, saya telah memeriksa classpath WebSphere 6.1 saya dan saya tidak melihat versi lain dari slf4j misalnya saya melakukan pencarian di sistem file WebSphere saya untuk tabung slf4j dan saya hanya mendapatkan versi 1.6 saya dikembalikan. Apakah Anda tahu jika WebSphere dikemas dengan slf4j?
JJ180
Segalanya mungkin tapi saya akan sangat terkejut jika WebSphere dibundel dengan slf4j-api. Bundel las slf4j-api.jar. Apakah Anda menggunakan Weld?
Ceki
4

Saya masuk ke masalah ini ketika saya mendapatkan kesalahan berikut:

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.

ketika saya menggunakan slf4j-api-1.7.5.jardi libs.

Meskipun saya mencoba dengan seluruh stoples komplemen yang disarankan, seperti slf4j-log4j12-1.7.5.jar, slf4j-simple-1.7.5pesan kesalahan masih ada. Masalahnya akhirnya terpecahkan ketika saya menambahkan slf4j-jdk14-1.7.5.jarke java libs.

Dapatkan seluruh paket slf4j di http://www.slf4j.org/download.html

pengguna278049
sumber
4

Silakan tambahkan dependensi berikut ke pom untuk menyelesaikan masalah ini.

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

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.25</version>
</dependency>
gowthamjs23
sumber
Saya baru saja memasukkan ketergantungan pertama - seperti yang ditunjukkan dalam jawaban lain - dan itu berhasil. Kedua dependensi tidak menyelesaikan masalah bagi saya.
RubioRic
Dan ingin menggunakan pakar lokal alih-alih pakar Bundle dari Intellij.
Abdul Gaffar
4

Sebagai alternatif inklusi jar dan solusi pakar murni, Anda dapat memasukkannya dari pakar dengan gradle.

Contoh untuk versi 1.7.25

// https://mvnrepository.com/artifact/org.slf4j/slf4j-simple
api group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.25'

Letakkan ini di dalam dependensi build.gradlefile Anda .

Vrakfall
sumber
3

Saya bekerja di proyek Struts2 + Spring. Jadi perlu ketergantunganslf4j-api-1.7.5.jar .

Jika saya menjalankan proyek, saya mendapatkan error seperti

Gagal memuat kelas "org.slf4j.impl.StaticLoggerBinder"

Saya memecahkan masalah saya dengan menambahkan slf4j-log4j12-1.7.5.jar.

Jadi tambahkan toples ini di proyek Anda untuk menyelesaikan masalah.

softmage99
sumber
3

Seperti yang dinyatakan dalam Manual SLF4J

Simple Logging Facade for Java (SLF4J) berfungsi sebagai fasad atau abstraksi sederhana untuk berbagai kerangka kerja logging, seperti java.util.logging, logback dan log4j.

dan

Peringatan akan hilang segera setelah Anda menambahkan ikatan ke jalur kelas Anda.

Jadi Anda harus memilih ikatan mana yang ingin Anda gunakan.

Pengikatan NoOp (slf4j-nop)

Mengikat untuk NOP, secara diam-diam membuang semua penebangan.

Periksa versi baru di https://search.maven.org/search?q=g:org.slf4j%20AND%20a:slf4j-nop&core=gav

Ikatan sederhana (slf4j-simple)

menampilkan semua peristiwa ke System.err. Hanya pesan INFO level dan lebih tinggi yang dicetak. Ikatan ini mungkin berguna dalam konteks aplikasi kecil.

Periksa versi baru di https://search.maven.org/search?q=g:org.slf4j%20AND%20a:slf4j-simple&core=gav

Binding untuk kerangka kerja logging (java.util.logging, logback, log4j)

Anda memerlukan salah satu dari ikatan ini jika Anda ingin menulis log ke file.

Lihat deskripsi dan instruksi di https://www.slf4j.org/manual.html#projectDep


Pendapat saya

Saya akan merekomendasikan Logback karena merupakan pengganti log4j proyek .

Periksa versi terbaru dari pengikatannya di https://search.maven.org/search?q=g:ch.qos.logback%20AND%20a:logback-classic&core=gav

Anda mendapatkan output konsol di luar kotak tetapi jika Anda perlu menulis log ke file, cukup FileAppenderkonfigurasikan ke src/main/resources/logback.xmlatau ke src/test/resources/logback-test.xmlseperti ini:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>logs/logs.log</file>

        <encoder>
            <pattern>%date %level [%thread] %logger{10} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>

    <logger level="DEBUG" name="com.myapp"/>
</configuration>

(Lihat deskripsi terperinci dalam manual: https://logback.qos.ch/manual/configuration.html )

Lu55
sumber
3
     <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.21</version>
    </dependency>

Masukkan ketergantungan yang disebutkan di atas dalam file pom.xml

Ajay
sumber
Tapi ingat untuk memeriksa versi terbaru.
user1053510
2

Saya menambahkan ketergantungan ini untuk menyelesaikan masalah ini:

https://mvnrepository.com/artifact/org.slf4j/slf4j-simple/1.7.25
Amado Saladino
sumber
1

Menurut dokumentasi resmi SLF4J

Gagal memuat kelas org.slf4j.impl.StaticLoggerBinder

Pesan peringatan ini dilaporkan ketika kelas org.slf4j.impl.StaticLoggerBinder tidak dapat dimuat ke memori. Ini terjadi ketika tidak ada ikatan SLF4J yang sesuai yang dapat ditemukan di jalur kelas. Menempatkan satu (dan hanya satu) dari slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar atau logback-classic.jar di jalur kelas harus menyelesaikan masalah.

Cukup tambahkan toples ini bersama dengan slf4j api.jar ke classpath Anda untuk menyelesaikan sesuatu. Semoga berhasil

Roushan
sumber
1

Saya menyelesaikannya dengan menambahkan perpustakaan ini: slf4j-simple-1.7.25.jar Anda dapat mengunduh ini di web resmi https://www.slf4j.org/download.html

Luis Manrique
sumber
1

mengalami masalah yang sama pada payara 5.191

jcl-over-slf4j bersama dengan slf4j-log4j12 memecahkan masalah

<properties>
  <slf4j.version>1.7.29</slf4j.version>
</properties>

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>${slf4j.version}</version>
  <type>jar</type>
</dependency> 

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>jcl-over-slf4j</artifactId>
  <version>${slf4j.version}</version>
</dependency>        

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>${slf4j.version}</version>
</dependency>
telman shahbazov
sumber
0

Saya tahu posting ini agak lama, tetapi jika ada orang lain yang mengalami masalah ini:

Tambahkan slf4j-jdk14-XXXjar ke CLASSPATH Anda (di mana XXX adalah nomor versi - mis. Slf4j-jdk14-1.7.5.jar).

HTH Peter

midiman
sumber
1
Apakah Anda menyarankan agar pengguna kembali ke JDK1.4 logging untuk menyelesaikan masalah classpath? Lihat juga entri FAQ ini: slf4j.org/faq.html#need_to_recompile
mwhs
0

Saya menggunakan Jena dan saya menambahkan ketergantungan sesama ke pom.xml

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

Saya mencoba untuk menambahkan slf4j-sederhana tetapi hanya menghilangkan "SLF4J: Gagal memuat kelas" org.slf4j.impl.StaticLoggerBinder "" kesalahan tetapi logback-klasik menampilkan informasi lebih detail.

The dokumen resmi

Pingjiang Li
sumber
0

solusinya ditunjukkan di situs web resmi mereka:

Gagal memuat kelas org.slf4j.impl.StaticLoggerBinder

Pesan peringatan ini dilaporkan ketika kelas org.slf4j.impl.StaticLoggerBinder tidak dapat dimuat ke memori. Ini terjadi ketika tidak ada ikatan SLF4J yang sesuai yang dapat ditemukan di jalur kelas. Menempatkan satu (dan hanya satu) dari slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar atau logback-classic.jar di jalur kelas harus menyelesaikan masalah. SEJAK 1.6.0 Pada SLF4J versi 1.6, dengan tidak adanya pengikatan, SLF4J akan default untuk implementasi logger tidak-operasi (NOP). Jika Anda bertanggung jawab untuk mengemas aplikasi dan tidak peduli tentang logging, maka menempatkan slf4j-nop.jar di jalur kelas aplikasi Anda akan menghilangkan pesan peringatan ini. Perhatikan bahwa komponen yang disematkan seperti pustaka atau kerangka kerja tidak boleh mendeklarasikan ketergantungan pada SLF4J yang mengikat tetapi hanya bergantung pada slf4j-api.

solusi: Saya telah menambahkan proyek saya menggunakan riset pakar pada intellij dan saya telah memilih slf4j-jdk14.jar.

Badr Bellaj
sumber
0

Kemungkinan besar masalah Anda adalah karena <scope>test</scope>(dalam beberapa kasus juga <scope>provided</scope>), seperti yang disebutkan @ thangaraj .

Dokumentasi mengatakan:

Lingkup ini menunjukkan bahwa ketergantungan tidak diperlukan untuk penggunaan normal aplikasi, dan hanya tersedia untuk fase kompilasi dan eksekusi. Ketergantungan uji tidak transitif dan hanya ada untuk kelas jalan tes dan eksekusi.

Jadi, jika Anda tidak memerlukan dependecies untuk tujuan pengujian maka Anda dapat menggunakan sebagai gantinya (apa yang akan Anda lihat di mvnrepository ):

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-nop</artifactId>
    <version>1.7.24</version>
    <scope>test</scope>
</dependency>

Tanpa cakupan apa pun (secara default akan mengkompilasi lingkup ketika tidak ada cakupan lain yang disediakan):

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop -->
<dependency>  
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-nop</artifactId>
   <version>1.7.25</version>
</dependency>

Ini sama dengan:

 <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop -->
 <dependency>  
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-nop</artifactId>
   <version>1.7.25</version>
   <scope>compile</scope>
 </dependency>
invzbl3
sumber
0

Inilah 5 sen saya ...

Saya memiliki masalah yang sama saat menjalankan tes. Jadi saya sudah memperbaikinya dengan menambahkan implementasi untuk uji runtime saja. Saya menggunakan gradle untuk proyek ini.

// https://mvnrepository.com/artifact/ch.qos.logback/logback-classic

grup testRuntimeOnly: 'ch.qos.logback', nama: 'logback-classic', versi: '1.2.3'

Esteban
sumber
0

Bagi saya masalahnya adalah: Menggunakan Hibernate, saya melihat bahwa itu sudah menggunakan slf4j, dan sudah ada di classpath saya, jadi saya memutuskan untuk menggunakannya. Langkah selanjutnya - menambahkan imlementor untuk slf4j, jadi saya menambahkan ke maven:

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

Tetapi gagal dengan kesalahan! SLF4J: Gagal memuat kelas "org.slf4j.impl.StaticLoggerBinder"

Solusinya adalah: Ketergantungan Hibernate untuk slf4j adalah versi 1.7.26 , dan saya menambahkan ketergantungan versi minor 1.7.25 . Jadi ketika saya memperbaikinya - semua menjadi baik-baik saja

JeSa
sumber
0

Saya tidak menambahkan dependensi, saya hanya mengubah cara saya mengkonsumsinya.

Kode pratinjau

(Batalkan komentar kode ini jika Anda menggunakan versi pencarian elastis <7.0)

IndexRequest indexRequest = new IndexRequest(
  "twitter",
  "tweets",
  id // this is to make our consumer idempotent
).source(record.value(), XContentType.JSON);

Kode saat ini

IndexRequest indexRequest = new IndexRequest("tweets")
  .source(record.value(), XContentType.JSON)
  .id(id); // this is to make our consumer idempotent

Saya menggunakan bulkrequest dan dengan itu saya menghapus kesalahan itu.

Dante Astudillo
sumber