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


619

Uygulamam tcServer ve WebSphere 6.1 üzerine dağıtılacak. Bu uygulama ehCache kullanır ve bu nedenle bağımlılık olarak slf4j gerektirir. Sonuç olarak slf4j-api.jar (1.6) kavanozunu savaş dosya paketine ekledim.

Uygulama tcServer'da aşağıdaki hata dışında iyi çalışır:

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.

Ancak, WebSphere'de dağıttığımda bir java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder.

Ayrıca Failed to load class "org.slf4j.impl.StaticMDCBinder"

Her iki uygulama sunucusunun sınıf yollarını kontrol ettim ve başka bir slf4j kavanoz yok.

Burada neler olabileceğine dair bir fikri olan var mı?


Bu makale sorunumu çözdü
Muhasebeci م

Yanıtlar:


517

WebSphere 6.1 ile de aynı sorunu yaşadım. Ceki'nin işaret ettiği gibi, WebSphere'in kullandığı tonlarca kavanoz vardı ve bunlardan biri slf4j'nin eski bir versiyonuna işaret ediyordu.

No-Op yedeklemesi sadece slf4j -1.6+ ile olur, bundan daha eski olan her şey bir istisna atar ve dağıtımınızı durdurur.

SLf4J sitesinde bunu çözen bir dokümantasyon var . Bunu takip ettim ve halihazırda slf4j-simple-1.6.1.jarsahip olduğum başvuruma ekledim slf4j-api-1.6.1.jar.

Bu benim sorunumu çözdü. Umarım bu sorunu yaşayanlara yardımcı olur.


4
Evet, hata burada da belirtildiği gibi gider - slf4j.org/manual.html Ama şimdi yeni bir hata alıyorum - Neden: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
david blaine

1
"Ceki'nin işaret ettiği gibi, WebSphere'in kullandığı tonlarca kavanoz vardı ve bunlardan biri slf4j'nin daha eski bir versiyonuna işaret ediyordu." - Maven için bağımlılıklarla ilgilenmek için çok fazla! Ne şaka ama.
AndroidDev


2
1.7 kullanıyorum ve aynı sorunu yaşıyorum. Ben slf4j-simple-1.7.jar ekleyin ve şimdi sorun çözüldü.
littletiger

1
Bu benim için işe yaramıyor. Slf4j basit kavanoz log4j.properties öğesini almaz. Bunun yerine, benim için iyi çalışan slf4j-log4j12 ve log4j kavanoz ekleyerek uygulamayı kullanıyorum.
flyrain

379

Bu, google aramadan buraya gelenler içindir.

Maven kullanıyorsanız sadece aşağıdakileri ekleyin

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

Veya

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

1
slf4j-simpleAynı sürüm olmamak için bir neden var mı slf4j-api? Muhtemelen birlikte iyi çalışırlardı, ancak bence aynı sürümü kullanmaları genel olarak daha güvenli ve daha iyi bir uygulamadır. Ayrıca, yalnızca konsol günlük kaydını etkinleştirmeniz gerekiyorsa, örneğin, birim testleri çalıştırırken, slf4j-simpleyeterli gibi görünüyor (benim için olsa da).
Ivaylo Slavov

22
AFAIK slf4j sadece 1 impl olmalıdır, yani ya slf4j-log4j12 VEYA slf4j-basit, her ikisi de değil.
Ondra Žižka

@Igor KatKov bu sadece yerel makinede çalışıyor ancak Jenkins'in de aynı hatayı alması neyin yanlış gittiğinden emin değil. lütfen netleştirebilir misiniz
vikramvi

slf4j-api, ilk çalıştırdığınızda mevcut olmayan (ve herhangi bir yapılandırma dosyasını düzenlememiş olan) yapılandırma gerektirir. Slf4j-simple kullanmak, WYSIWYG dışında herhangi bir dosya yapılandırmadan temel Logger'ı kullanmanıza izin verecektir. Ardından, dosyaları yapılandırmayı ve Logger çıktısını istediğiniz gibi özelleştirmeyi öğrendikten sonra slf4j-api'ye geri dönebilirsiniz. (Hala nerede olduğunu ve kendimi nasıl düzenleyeceğimizi öğreniyorum)
chrips

53

Bunu pom.xml dosyasına eklemeniz yeterlidir :

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

3
Çözüm benim için çalıştı; ( Açıklanan
Witold Kaczurba

2
basit bir kafka üreticisi örneğinde çalışırken bu benim için işe yaramadı. çok teşekkürler!
Viren

@WitoldKaczurba haklı. Maaven kullanarak bağımlılığı kullanırken aynı sorunu yaşıyordum. Ben sadece googled ve sorunu ve çözümü bildiren slf4j.org/codes.html#StaticLoggerBinder gittim . Slf4j-api 1.7.25 sürümünü kullanıyordum. Bahsedilen bağlantıya ait belgeleri kontrol ettikten sonra sadece <bağımlılık> kullandım <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.25</version> </dependency>ve sorun çözüldü
Mohammad Anas

Bazı logger (örneğin slf4j gerektiren Gidonlar) kütüphaneleri kendi pom beyan etmiyorsa Maven kullanmanın anlamını anlamıyorum. Neyse: teşekkür ederim.
Eric Duminil

Benim durumumda, bu çözüm değil. Slf4j ve log4j'nin veya başka bir eklentinin uyumsuz sürümleri yalnızca bilgileri gizler.
hariprasad

42

Eğer sınıf yolunda kavanoz dosyasına aşağıdakileri ekleyin gerekir: slf4j-simple-1.6.2.jar. Eğer sahip değilseniz, lütfen indirin. Lütfen http://www.slf4j.org/codes.html#multiple_bindings adresine bakın.


Ama tcServer sınıf yolumda bu kavanoz yok, beni şaşırtan şey bu. TCServer'da ek bir kavanoza nasıl ihtiyacım olmadığını anlamıyorum ama WebSphere'de yapıyorum
JJ180 14:11

1
Benim için çalıştı ve kabul edilen cevaptan çok daha basit. 1.7.7 sürümü de çalıştı.
La-comadreja

1
Zaten jul-to-slf4jbenim vardı pom.xmlve sadece daha slf4j-simpleönce ekledi ve iyi çalışıyor.
slugmandrew

Jar dosyasını sınıf yoluna nasıl ekleyebilirim?
Dean013

Lütfen, bana sınıf yolunun ne olduğunu açıklayabilir misin? nerede? Anlamıyorum
Rose8525

36

Oldukça birkaç cevap burada mfen pom dosyanıza slf4j-simple bağımlılığını eklemenizi önerir. En güncel sürümü kontrol etmek isteyebilirsiniz.

At https://mvnrepository.com/artifact/org.slf4j/slf4j-simple Eğer Bağlama SLF4J basit son sürümünü bulabilirsiniz. Size en uygun olanı seçin (hala 2019-02'den 1.7.26, 2019-07 itibariyle kararlı sürümdür) ve pom.xml'nize ekleyin.

Size kolaylık sağlamak için bazı bağımlılıklar burada gösterilmiştir - ancak bunu okuduğunuzda güncel olmayabilirler!

2019-10 Alfa Sürümü

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

Şubat 2019'un Beta Sürümü

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

Kararlı Sürüm 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>

Aşağıdaki yorum sayesinde kapsam test bölümünü kaldırdım.


6
neden kullanıyorsunuz <scope>test</scope>? Deneyimlerime göre, en azından sınıf yolunda runtimeolduğundan emin olmak için kapsama ihtiyacım var slf4j-simple. Bunu sadece testkapsamla nasıl çalıştıracağınızı merak ediyorum ...
ecoe

Bunu işaret ettiğiniz için teşekkür ederim. Kapsam etiketini uygun şekilde cevabımdan kaldırdım. Bu bir kes ve yapıştır sorunuydu - sağladığım bağlantı beta bağımlılığını bu şekilde sağlıyor.
Wolfgang Fahl

27

Aynı hatayla karşılaşıyordum. Yerel geliştirmemde slf4j-api, slf4j-log4j12 ve log4j'yi yapılandırdım. Tüm yapılandırmalar iyiydi, ancak mvnrepository'den kopyaladığım slf4j-log4j12 bağımlılığı test kapsamına sahipti <scope>test</scope>. Bunu kaldırdığımda her şey yolunda.

Bazen aptalca hatalar kafamızı kırar;)


1
Milyonlarca kez teşekkürler! Ben de aynı sorundan nefret ediyorum ve yazınızı bulana kadar vazgeçmek üzereydim!
Ergodyne

1
Bu da bana yardımcı oldu
cod3min3

27

Bazen uyarının notunu görmeliyiz SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. .

Bu, sınıf yolunda uygun bir SLF4J bağlaması bulunamadığında olur

Bu uyarının neden geleceğini araştırabilirsiniz.
Dan kavanoz birini ekleme *slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jarveya logback-classic.jar*sınıf yoluna sorunu çözmek gerekir.

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

örneğin, yukarıdaki kodu maven projenize build.gradleveya ilgili koda ekleyin pom.xml.


15

slf4j-log4j12-1.6.4.jarsınıf yoluna dosya koymak hile yapar.


6
veya bağımlılığınızı pom <dependency> <groupId> org.slf4j </groupId> <artifactId> slf4j-log4j12 </artifactId> </dependency>
enkor

11

Maven'i bağımlılık yönetimine kullanıyorsanız, pom.xml dosyasına aşağıdaki bağımlılığı ekleyebilirsiniz.

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

Maven olmayan kullanıcılar için Kütüphaneyi indirin ve proje sınıf yolunuza koyun.

Burada detayları görebilirsiniz: http://www.mkyong.com/wicket/java-lang-classnotfoundexception-org-slf4j-impl-staticloggerbinder/


1
Ayrıca maven kullanıcıları için aşağıdakileri de otomatik olarak geri dönüş çekirdeği getiren pom.xml'e eklemem gerektiğini buldum: <dependency> <groupId> ch.qos.logback </groupId> <artifactId> logback-classic </ artifactId> <sürüm> 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 @Paul tarafından belirtildiği gibi sarxos yorumu için logback-classic eklemeniz gerekiyor. İle ilgili değişikliği başka bir yaklaşım <artifactId>slf4j-simple</artifactId>dan <artifactId>slf4j-api</artifactId>da çalışır. Bu gösterilmektedir burada
Abhijeet

10

SLF4j, çeşitli kayıt çerçeveleri için bir soyutlamadır . Bu nedenle, slf4j'e sahip olmanın yanı sıra, sınıf yolunuza log4j veya logback (vb.) Gibi günlükleme çerçevelerinizden herhangi birini eklemeniz gerekir.
Bir fikir başvurmak sahip olmak Birinci Bebek Adım içinde http://logback.qos.ch/manual/introduction.html


2
Geri dönüş eklemek benim için bunu düzeltti. Ben son logback klasik pom (1.1.7) düştü ve slf4j bağımlılığı çok eski (1.6.2) çünkü başarısız oldu. Geri dönüş değerini 1.0.0'a düşürmek ve slf4j'yi 1.6.x'te bırakmak, slf4j'yi 1.7.20'ye yükseltmek ve 1.1.7'de geri bildirim bırakmak gibi çalıştı.
ECDragon

5

Slf4j, log4j, logback, java.util.logging gibi temel kayıt çerçeveleri için bir cephedir.

Alttaki çerçevelere bağlanmak için slf4j bir ciltleme kullanır.

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

Bağlama kavanozu kaçırılırsa yukarıdaki hata atılır. Bu kavanozu indirebilir ve sınıf yoluna ekleyebilirsiniz.

Maven bağımlılığı için,

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

Bu bağımlılık slf4j-log4j12-1.7.21.jar'a ek olarak, projenize slf4j-api-1.7.21.jar ve log4j-1.2.17.jar çekecektir.

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


Çözümünüz benim için çalışan tek çözümdü, teşekkürler!
Edenshaw

5

Java 9 kitaplığı olan Spring-boot-2 uygulamalarında da benzer bir sorunla karşılaştım.

Pom.xml dosyama aşağıdaki bağımlılığı eklemek sorunu benim için çözdü:

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

4

Websphere durumunda, slf4j-api.jar, 1.4.x dosyasının daha eski bir sürümüne sahipsiniz. veya 1.5.x bir yerde yatıyor. NOP'a başarısız olan tcServer'da gözlemlediğiniz davranış, slf4j 1.6.0 ve sonraki sürümlerinde oluşur. Tüm platformlarda slf4j-api-1.6.x.jar kullandığınızdan ve sınıf yoluna slf4j-api'nin daha eski bir sürümünün yerleştirilmediğinden emin olun.


Teşekkürler, WebSphere 6.1 sınıfyolumu kontrol ettim ve slf4j'in başka bir sürümünü göremiyorum, örneğin slf4j jar için WebSphere dosya sistemimde bir arama yaptım ve yalnızca 1.6 sürümüm geri döndü. WebSphere'in slf4j ile birlikte gelip gelmediğini biliyor musunuz?
JJ180

Her şey mümkün, ancak WebSphere slf4j-api ile birlikte gelirse çok şaşırırdım. Kaynak demetleri slf4j-api.jar. Kaynak mı kullanıyorsunuz?
Ceki

4

Aşağıdaki hatayı aldığımda bu sorunla karşılaştım:

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.

ben kullanıyordum slf4j-api-1.7.5.jariçinde benimlibs .

Inspite Ben bütün önerilen tamamlayıcı kavanoz ile çalıştı gibi slf4j-log4j12-1.7.5.jar, slf4j-simple-1.7.5hata mesajı hala devam etti. Eklediğimde sorun nihayet çözüldüslf4j-jdk14-1.7.5.jarJava liblerine .

Tüm slf4j paketini http://www.slf4j.org/download.html adresinden edinin.


4

Bu sorunu çözmek için lütfen aşağıdaki bağımlılıkları pom'a ekleyin.

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

İlk bağımlılığı - başka bir cevaba işaret ettiği gibi - ekledim ve işe yarıyor. Her iki bağımlılık da benim için sorunu çözmüyor.
RubioRic

Ve Intellij'in Paketlenmiş makineleri yerine yerel makineleri kullanmak istersiniz.
Abdul Gaffar

4

Kavanoz içerme ve saf maven çözeltilerine alternatif olarak, mavenden kepçe ile dahil edebilirsiniz .

Sürüm örneği 1.7.25

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

Bunu build.gradledosyanızın bağımlılıklarına ekleyin .


3

Struts2 + Spring adlı bir projede çalışıyorum. Yani bir bağımlılığa ihtiyacı varslf4j-api-1.7.5.jar .

Projeyi çalıştırırsam, şu şekilde hata alıyorum:

"Org.slf4j.impl.StaticLoggerBinder" sınıfı yüklenemedi

Sorunumu ekleyerek çözdüm slf4j-log4j12-1.7.5.jar.

Sorunu çözmek için bu kavanozu projenize ekleyin.


3

As SLF4J Manuel devletler

Java için Basit Logging Facade (SLF4J), java.util.logging, logback ve log4j gibi çeşitli günlük çerçeveleri için basit bir cephe veya soyutlama işlevi görür.

ve

Sınıf yolunuza bir bağlayıcı eklediğinizde uyarı kaybolacaktır.

Bu yüzden hangi ciltlemeyi kullanmak istediğinizi seçmelisiniz.

Noop bağlama (slf4j-nop)

NOP için ciltleme, tüm günlük kaydını sessizce atar.

Https://search.maven.org/search?q=g:org.slf4j%20AND%20a:slf4j-nop&core=gav adresinden yeni sürümü kontrol edin

Basit ciltleme (slf4j-basit)

tüm olayları System.err dosyasına gönderir. Yalnızca INFO ve üzeri seviyedeki mesajlar yazdırılır. Bu bağlanma, küçük uygulamalar bağlamında faydalı olabilir.

Https://search.maven.org/search?q=g:org.slf4j%20AND%20a:slf4j-simple&core=gav adresinden yeni sürümü kontrol edin

Günlük çerçeveleri için bağlamalar (java.util.logging, logback, log4j)

Bir dosyaya günlük yazacaksanız, bu bağlantılardan birine ihtiyacınız vardır.

Https://www.slf4j.org/manual.html#projectDep adresindeki açıklamaya ve talimatlara bakın.


Benim fikrim

Logback için bir halef olduğu için Logback'i öneriyorum projesi.

Bağlamanın en son sürümünü https://search.maven.org/search?q=g:ch.qos.logback%20AND%20a:logback-classic&core=gav adresinden kontrol edin

Kutunun dışına konsol çıktısını almak ancak dosyaya yazma günlükleri gerekirse sadece koymak FileAppenderiçin yapılandırma src/main/resources/logback.xmlya da src/test/resources/logback-test.xmlaynen böyle:

<?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>

(Kılavuzdaki ayrıntılı açıklamaya bakın: https://logback.qos.ch/manual/configuration.html )


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

Yukarıda belirtilen bağımlılığı pom.xml dosyasına koyun


Ancak en son sürümü kontrol etmeyi unutmayın.
user1053510

2

Bu sorunu çözmek için bu bağımlılığı ekledim:

https://mvnrepository.com/artifact/org.slf4j/slf4j-simple/1.7.25

1

Göre SLF4J resmi belgeler

Org.slf4j.impl.StaticLoggerBinder sınıfı yüklenemedi

Bu uyarı iletisi, org.slf4j.impl.StaticLoggerBinder sınıfı belleğe yüklenemediğinde bildirilir. Bu, sınıf yolunda uygun bir SLF4J bağlaması bulunamadığında gerçekleşir. Sınıf yoluna slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar veya logback-classic.jar öğelerinden birini (ve yalnızca birini) yerleştirmek sorunu çözmelidir.

Basitçe eklemek Bu kavanoz halletmek için sınıf yoluna slf4j api.jar birlikte. İyi şanslar



1

payara 5.191 üzerinde aynı sorunla karşılaştı

jcl-over-slf4j ile birlikte slf4j-log4j12 sorunu çözdü

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

0

Bu yazının biraz eski olduğunu biliyorum, ancak başka birinin bu sorunla karşılaşması durumunda:

CLASSPATH cihazınıza slf4j-jdk14-XXXjar ekleyin (burada XXX sürüm numarasıdır - örn. Slf4j-jdk14-1.7.5.jar).

HTH Peter


1
Kullanıcıların bir sınıf yolu sorununu çözmek için JDK1.4 günlük kaydına dönmeleri gerektiğini mi öneriyorsunuz? Ayrıca şu SSS girişine de bakın: slf4j.org/faq.html#need_to_recompile
mwhs

0

Jena kullanıyorum ve pom.xml'ye bağımlılık ekliyorum

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

Ben slf4j-basit eklemeye çalışıyorum ama sadece "SLF4J:" org.slf4j.impl.StaticLoggerBinder "sınıfı yüklenemedi kaybolur ama logback-classic daha ayrıntılı bilgi gösterir.

resmi belge


0

çözüm resmi web sitelerinde belirtilmiştir:

Org.slf4j.impl.StaticLoggerBinder sınıfı yüklenemedi

Bu uyarı iletisi, org.slf4j.impl.StaticLoggerBinder sınıfı belleğe yüklenemediğinde bildirilir. Bu, sınıf yolunda uygun bir SLF4J bağlaması bulunamadığında gerçekleşir. Sınıf yoluna slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar veya logback-classic.jar öğelerinden birini (ve yalnızca birini) yerleştirmek sorunu çözmelidir. 1.6.0'DAN BERİ SLF4J versiyon 1.6'dan itibaren, bir bağlantının yokluğunda, SLF4J varsayılan olarak işlemsiz (NOP) bir kaydedici uygulamasına geçecektir. Bir uygulamayı paketlemekten sorumluysanız ve günlüğe kaydetmeyi önemsemiyorsanız, slf4j-nop.jar dosyasının uygulamanızın sınıf yoluna yerleştirilmesi bu uyarı iletisinden kurtulur. Kütüphaneler veya çerçeveler gibi gömülü bileşenlerin herhangi bir SLF4J bağına bağımlılık göstermemesi gerektiğini, yalnızca slf4j-api'ye bağlı olduğunu unutmayın.

çözüm: Intellij üzerine maven araştırması kullanarak projeme ekledim ve slf4j-jdk14.jar'ı seçtim.


0

Büyük olasılıkla, sorununuz <scope>test</scope>(bazı durumlarda da <scope>provided</scope>) @thangaraj'dan bahsedildi .

Belgeler diyor ki:

Bu kapsam, bağımlılığın uygulamanın normal kullanımı için gerekli olmadığını ve yalnızca test derleme ve yürütme aşamaları için kullanılabilir olduğunu gösterir. Test bağımlılıkları geçişli değildir ve yalnızca test ve yürütme sınıf yolları için mevcuttur.

Bu nedenle, test amacıyla bağımlılıklara ihtiyacınız yoksa ( mvnrepository'de göreceğiniz ) yerine şunları kullanabilirsiniz :

<!-- 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>

Herhangi bir kapsam olmadan (varsayılan olarak başka bir kapsam sağlanmadığında derleme kapsamı olur):

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

Bu aynı:

 <!-- 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>


0

Benim için sorun şuydu: Hibernate kullanarak, zaten slf4j kullanıldığını gördüm ve zaten sınıf yolumda olduğunu gördüm, bu yüzden kullanmaya karar verdim. Bir sonraki adım - slf4j için imlementor ekleyerek, maven'e ekledim:

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

Ancak hata ile başarısız oldu! SLF4J: “org.slf4j.impl.StaticLoggerBinder” sınıfı yüklenemedi

Çözüm şuydu: Hibernate'in slf4j bağımlılığı sürüm 1.7.26 idi ve küçük sürüm bağımlılığı 1.7.25 ekledim . Bunu düzelttiğimde - her şey yolunda gitti


0

Herhangi bir bağımlılık eklemedim, sadece onları kullanma şeklimi değiştirdim.

Önizleme kodu

(Elastik arama sürümü <7.0 kullanıyorsanız bu kodu kaldırın)

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

Mevcut kod

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

Bulkrequest kullanıyorum ve bununla bu hatayı kaldırın.

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.